编写递归算法,在二叉树中求位于先序序列中第K个位置的结点的值是什么?

如题所述

以下的代码只是算法的思想:
count=0;
void BinaryTree<T>::pre_order(BinaryTreeNode<T> * root,int &count,int & val,int k )
{
while(root!=NULL)
{
visit(root);
count++;
if(count==k)
{val=root->val; return;}
pre_order(root->p_lchild,count,val,k);
root=root->p_rchild;
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

1编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值(写出算...
输出方法修改为计数方式,计数到第K次输出是才进行真实输出即可,例如:bool print(TreeNode *node, int &curTime, int k ){ curTime++;if (curTime == k){ printf("%c", node->value);return true;} return false;} \/\/起始curTime的值为0 bool FirstTraversalTree(TreeNode *root, int &c...

编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,输出其先序...
include "malloc.h"define ELEMTYPE char BiTNode *bulid() \/*建树*\/ { BiTNode *q;BiTNode *s[20];int i,j;char x;printf("请按顺序输入二叉树的结点以输入0和*号结束\\n");printf("请输入要输入的为第几个结点i=\\n");scanf("%d",&i);printf("请输入你要输入该结点的数为x=");ge...

用递归算法先序中序后序遍历二叉树
1、先序 void PreOrderTraversal(BinTree BT){ if( BT ){ printf(“%d\\n”, BT->Data); \/\/对节点做些访问比如打印 PreOrderTraversal(BT->Left); \/\/访问左儿子 PreOrderTraversal(BT->Right); \/\/访问右儿子 } } 2、中序 void InOrderTraversal(BinTree BT){ if(BT){ InOrde...

二叉树节点值是什么意思
1、二叉树节点值是二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的i-1次方个结点;深度为k的二叉树至多有2^(k)-1个结点。2、在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”...

编写一个递归算法,统计并返回以BT为树根指针的二叉树中的叶子结点的个...
当x左右子树为空 f(x)=1;其他 f(x)=f(bt->lchild)+f(bt-rchild)--- int Count(BTreeNode *BT){ int l,r;if(BT==NULL) return 0;else if(BT->Lchild==NULL&&BT->Rchild==NULL) return 1;else { l=Count(BT->Lchild);r=Count(BT->Rchild);return (l+r);} } ...

二叉树先序非递归遍历C语言算法
\/\/按先序次序输入二叉树中的结点的值(一个字符),空格字符表示空树, \/\/构造二叉链表表示二叉树 char ch; scanf("%c",&ch); if(ch=='#') *T=NULL; else{ *T=(bitree * )malloc(sizeof(bitree)); if(!*T) exit(1); (*T)->data=ch; \/\/生成根结点 CreateBiTree(&(*T)->lchild); \/\/...

建立二叉树,层序、先序、中序、后序遍历( 用递归或非递归的方法都需要...
\/\/===基于先序遍历算法创建二叉树=== \/\/===要求输入先序序列,其中加入虚结点"#"以示空指针的位置=== BinTree CreatBinTree(void){ BinTree T;char ch;if((ch=getchar())=='#')return(NULL); \/\/读入#,返回空指针 else{ T=(BinTNode *)malloc(sizeof(BinTNode)); \/\/生成...

写一个算法,交换一棵二叉树T的左右子树,要求使左子树根结点的关键字k小...
\/\/递归算法(更像伪代码)void swap(BT root){ if(root){ if(root.l&&root.r&&(*root.l).key>(*root.r).key){ BT p=(*root).l;(*root).l=(*root).r;(*root).r=p;} swap((*root).l);swap((*root).r);} }

求数据结构二叉树查找结点及其父节点的代码,谢谢!!!
{\/\/构建二叉树 if(a[num]==0){\/\/a[num]==0,表示空结点 tree[rt].v=-1;} else { if(mp.count(a[num])==0)mp[a[num]]=rt;\/\/储存a[num]在树中的位置 tree[rt].v=a[num];\/\/结点赋值 num++;build_tree(2*rt,num);\/\/左孩子 num++;build_tree(2*rt+1,num);\/\/右孩子...

二叉树的第k层的结点数最多为( )
二叉树的第k层的结点数最多为(2^k-1 )深度为k的二叉树至少有(k)个结点,一条“链条”。满二叉树至多有(2^k-1)个结点,深度为k的完全二叉树,最少有 2^(k-1)+1)个结点,比深度为k-1的满二叉树多一层,且在底层的最左端有一个结点,满二叉树最多有(2^k-1 )个结点。当n>1...

相似回答