知识大全 数据结构考研分类复习真题 第六章 答案 (五)[24]
Posted 结点
篇首语:观书散遗帙,探古穷至妙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[24]相关的知识,希望对你有一定的参考价值。
[题目分析]二叉树结点p所对应子树的第一个后序遍历结点q的求法如下 若p有左子树 则q是p的左子树上最左下的叶子结点 若p无左子树 仅有右子树 则q是p的右子树上最左下的叶子结点
BiTree PostFirst(p) BiTree q=p; if (!q) return(null); else while(q >lchild || q >rchild); //找最左下的叶子结点 if(q >lchild) q=q >lchild; //优先沿左分枝向下去查 最左下 的叶子结点 else q=q >rchild; //沿右分枝去查 最左下 的叶子结点 return(q);
[算法讨论]题目 求p所对应子树的第一个后序遍历结点 蕴涵p是子树的根 若p是叶子结点 求其后继要通过双亲
( )由先序序列A[ n]和中序序列B[ n] 可以确定一棵二叉树 详见本章四第 题
( )void PreInCreat( ElemTypeA[] B[] int l h l h )
//由二叉树前序序列A[ n]和中序序列B[ n]建立二叉树 l h 和l h 分别为先序序列和 //中序序列第一和最后结点的下标 初始调用时l =l = h =h =n typedef struct int l h l h ; BiTree t; node; BiTree bt; int top= i; node s[] p; //s为栈 容量足够大 bt=(BiTree)malloc(sizeof(BiNode)); //申请结点空间 p l =l ; p h =h ; p l =l ; p h =h ; p t=bt; s[++top]=p; //初始化 while(top> ) p=s[top ]; bt=p t; l =p l ; h =p h ; l =p l ;h =p h ;//取出栈顶数据 for(i=l ;i<=h ;i++) if(B[i]==A[l ]) break; //到中序序列中查根结点的值 bt >data=A[l ]; //A[l ]为根结点的值 if(i==l ) bt >lchild=null; //bt无左子树 else //将建立左子树的数据入栈 bt >lchild=(BiTree)malloc(sizeof(BiNode)); p t=bt >lchild; p l =l + ; p h =l +i l ; p l =l ; p h =i ; s[++top]=p; if(i==h ) bt >rchild=null; //bt无右子树 else bt >rchild=(BiTree)malloc(sizeof(BiNode)); p t=bt >rchild; p l =l +i l + ; p h =h ; p l =i+ ; p h =h ; s[++top]=p; //右子树数据入栈 //while 结束PreInCreat
( )当二叉树为单支树时 栈深n 当二叉树左右子树高相等时 栈深logn 时间复杂度O(n)
cha138/Article/program/sjjg/201311/23724相关参考
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[23]
PROCprint(bt:BiTreexy:integer) //将二叉树逆时针旋转度打印xy是根结点基准坐标调用时xy= IFbt<>NILTHEN[print(bt↑rchil
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[19]
intLevel(BiTreebt)//层次遍历二叉树并统计度为的结点的个数 intnum=;//num统计度为的结点的个数 if(bt)QueueInit(Q);QueueIn(Qbt)//
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[47]
.BiThrTreeInSucc(BiThrTreeTp) //在对称序穿线树T中查找给定结点p的中序后继 if(p>rtag==)q=p>rchild; &nb
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[33]
intBTLC(BiTreeTint*c)//对二叉树T的结点计数 if(T) *c++; BTLC(T>lchild&c);//统计左子树结点 BTLC(T>rchi
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[45]
voidInOrderThreat(BiThrTreethrt) //thrt是指向中序全线索化头结点的指针本算法中序遍历该二叉树 p=thrt>lchild; //p指向二叉
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[34]
.intCount(BiTree bt)//非递归遍历求二叉树上的叶子结点个数 intnum=; BiTrees[];//s是栈栈中元素是二叉树结点指针栈容量足够大 whlie(b
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[25]
[题目分析]知二叉树中序序列与后序序列第题以递归算法建立了二叉树本题是非递归算法 voidInPostCreat(ElemTypeIN[]POST[]intlhlh) //由二叉树的中序序列I
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[15]
[题目分析]先序遍历二叉树的非递归算法要求进栈元素少意味着空指针不进栈 voidPreOrder(Bitree bt)//对二叉数bt进行非递归遍历 inttop=;Bitrees[
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[6]
.BiTreeCreat(ElemTypeA[]inti) //n个结点的完全二叉树存于一维数组A中本算法据此建立以二叉链表表示的完全二叉树 BiTreetree; if(i<=n)t
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[4]
.[题目分析]当森林(树)以孩子兄弟表示法存储时若结点没有孩子(fch=null)则它必是叶子总的叶子结点个数是孩子子树(fch)上的叶子数和兄弟(nsib)子树上叶结点个数之和 typedef