已知二叉树以二叉链表做为存储结构,阅读算法并回答下列问题1该算法的功能是什么2算法中的n的作
推荐回答
该算法的功能是前序遍历二叉树,统计二叉树中含有左右两个孩子的结点的个数。n的作用是统计二叉树中含有左右两个孩子的结点的个数。
齐敦益2019-12-21 18:57:39
提示您:回答为网友贡献,仅供参考。
其他回答
-
StatusPostOrderTraverseBiTreeT{//后序遍历二叉链表树的非递归算法//找到结点最大值SqStackS;InitStackS;BiTreep=T;BiTreepre=NULL;//pre指向上次访问的结点TElemTypeMaxdata=T->data;//用来储存最大值whilep||!StackEmptyS{whilep{PushS,p;p=p->lchild;}GetTopS,p;ifp->rchild==NULL||pre==p->rchild{ifp->data>MaxdataMaxdata=p->data;//更新最大值PopS,pre;p=NULL;//避免下次重新进入p的左子树}elsep=p->rchild;//走向p的右子树}returnOK;。
堵文波2019-12-21 19:38:59
-
看样子是才学数据结构吧...我以前学过,忘很多了,看这么高的分,我就顺便复习一下吧;首先理解一下什么是高度:高度其实也叫深度,我通俗点说就是比如根节点是第一层,根节点的左右孩子为第二层,然后根节点的左右孩子各自的孩子为第三层.....那么二叉树的高度就是这棵树最大的层数。这么说不知道明白了没有,举例就是:如果只有一个根节点,那么高度就是1,如果有一个根节点再加上根节点的两个孩子,或者其中一个孩子,那么高度就是2;那根据这样如果用递归的思想,我想算法就比较好写了,就是统计一下根节点的左右孩子的高对呗,看哪个的高度更大那二叉树高度就是那个呗。下面我粘贴出网上的两个算法{ift==NULLreturn0;else{intm=heightt->lchild;intn=heightt->rchild;//递归计算该节点的左右孩子的高度returnm>n?m+1:n+1;//只不过这里没有用到上面求最大值的那个函数,应该学过C}//吧,这就是个逗号表达式,判断?A:B判断满足就返回A不满}//足就返回B那这句换还是一样就是求m和n的最大值然后加1返回大概就这么个意思,如果程序没通过,可以试着按这个想法稍微改改。分能给我么。
龚尧莞2019-12-21 19:14:37
-
以二叉链表作文二叉树的存储结构,编写一下算法:这个题目能帮你完成的。
龚子鸣2019-12-21 18:41:35
相关问答
#include#include#include#defineNUM_NODE12typedefstructBiTree{intdata;BiTree*lchild;BiTree*rchild;}BiTree;BiTree*CreateTreeintn{BiTree*t;ifnNUM_NODEreturnNULL;if!t=BiTree*mallocsizeofBiTreereturnNULL;t->data=n;printf"%d",t->data;t->lchild=CreateTree2*n;t->rchild=CreateTree2*n+1;returnt;}voidFreeTreeBiTree*t{ift{ift->lchildFreeTreet->lchild;ift->rchildFreeTreet->rchild;printf"%d",t->data;freet;}}typedefstructNodePos{BiTree*pos;intDepth;}NodePos;//前序查找,如果返回0,说明树中没有这个数depth参数为根结点的层数,由用户定intPreSeekBiTree*T,intdata,intdepth,NodePos*p{intret=0;ifT->data==data{p->Depth=depth;p->pos=T;ret=1;}else{ifT->lchildret+=PreSeekT->lchild,data,depth+1,p;ifT->rchildret+=PreSeekT->rchild,data,depth+1,p;}returnret;}intmain{BiTree*root;printf"CreateTree\n";root=CreateTree1;printf"Inputwhatyoulookingfor:";inta;NodePospos;scanf"%d",&a;ifPreSeekroot,a,1,&posprintf"结点地址为:%8X,深度:%d\n",pos.pos,pos.Depth;elseprintf"Nodenotfound\n";printf"\nFreeTree\n";FreeTreeroot;return0;。