编写递归算法,在二叉树中求位于先序序列中第K个位置的结点的值。帮下忙,谢谢啦!

如题所述

第1个回答  2011-12-03
以下的代码只是算法的思想:
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个位置的结点的值(写出算...
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 &curTime, int k){ if (root == NULL)return false;if (print(root...

用递归算法先序中序后序遍历二叉树
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...

编写一个递归算法,统计并返回以BT为树根指针的二叉树中的叶子结点的个...
当x=NULL f(x)=0;当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);re...

构造一棵二叉树,并分别输出其先序遍历、中序遍历和后序遍历的结果
cout<<"二叉树的先序遍历为:"<<endl;preBiTree(T);cout<<endl;cout<<"二叉树的中序遍历为:"<<endl;InBiTree(T);cout<<endl;cout<<"二叉树的后序遍历为:"<<endl;PostBiTree(T);cout<<endl;cout<<"二叉树的深度为:"<<endl;cout<<Depth(T)<<endl;} ...

建立二叉树,层序、先序、中序、后序遍历( 用递归或非递归的方法都需要...
\/\/===采用后序遍历求二叉树的深度、结点数及叶子数的递归算法=== int TreeDepth(BinTree T){ int hl,hr,max;if(T){ hl=TreeDepth(T->lchild); \/\/求左深度 hr=TreeDepth(T->rchild); \/\/求右深度 max=hl>hr? hl:hr; \/\/取左右深度的最大值 NodeNum=NodeNum+1; \/\/求...

二叉树采用链式存储结构,设计一个递归算法设计一棵给定二叉树的所有结...
int Count(Bitree T)\/\/ 根结点指针T { int n = 0;if (T != NULL)n = 1 + Count(T->leftchild) + Count(T->rightchild);return n;}

二叉树先序非递归遍历C语言算法
printf(" 先序遍历 非递归算法 输出二叉树所有结点内容:\\n "); while(B!=NULL||s->top>0) { if(B!=NULL) { printf("%c ", B->data); s->data[s->top++]=B; B=B->Lchild; } else { B=s->data[--s->top]; B=B->Rchild; } }}int main(void){ srand((unsigned)time(NULL));...

数据结构,建立二叉树的存储结构,先序、中序、后序遍历二叉树(要求任 ...
后序遍历二叉树(要求任选某一种用非递归算法完成); 3、查询二叉树中指定结点;

设一棵二叉树中各结点的值互不相同,其前序序列和中序序列分别存于两个...
int search(char ino[],char pre)\/\/在中序序列中查找先序中该元素所在位置 { int i=0;while(ino[i]!=pre&&ino[i])i++;if(ino[i]==pre)return i;else return -1;} void CrtBT(BitTree &T,char pre[],char ino[],int ps,int is,int n)\/*递归算法构造函数,建立二叉链表*\/ {...

数据结构二叉树的基本操作~~~
用递归的方法实现以下算法:1.以二叉链表表示二叉树,建立一棵二叉树;2.输出二叉树的前序遍历结果;3.输出二叉树的中序遍历结果;4.输出二叉树的后序遍历结果;5.统计二叉树的叶结点个数;6.统计二叉树的结点个数;7.计算二叉树的深度。8.交换二叉树每个结点的左孩子和右孩子;include <...

相似回答