知识大全 数据结构考研分类复习真题 第六章 答案 (五)[49]
Posted 结点
篇首语:一箫一剑平生意,负尽狂名十五年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[49]相关的知识,希望对你有一定的参考价值。
.[题目分析]第 题已讨论了在中序线索树中查找结点p的后序后继问题 本题要求在中序线索树上进行后序遍历 因后序遍历是 左右根 最后访问根结点 即只有从右子树返回时才能访问根结点 为此设一标志returnflag 当其为 时表示从右侧返回 可以访问根结点 为了找当前结点的后继 需知道双亲结点的信息 在中序线索树中 某结点最左子孙的左线索和最右子孙的右线索均指向其双亲 因此设立两个函数LeftMost和RightMost求结点的最左和最右子孙 为了判定是否是从右子树返回 再设一函数IsRightChild
BiThrTree LeftMost(BiThrTree t) //求结点t最左子孙的左线索 BiThrTree p=t; while(p >ltag== ) p=p >lchild; //沿左分枝向下 if (p >lchild!=null) return(p >lchild); else return(null); //LeftMost BiThrTree RightMost(BiThrTree t)//求结点t最右子孙的右线索 BiThrTree p=t; while(p >rtag== ) p=p >rchild; //沿右分枝向下 if (p >rchild!=null) return (p >rchild); else return(null); //RightMost int IsRightChild(BiThrTree t father) //若t是father 的右孩子 返回 否则返回 father=LeftMost(t); if(father &&f ather >rchild==t) return( ); else return( ); //Is RightChild; void PostOrderInThr (BiThrTree bt) //后序遍历中序线索二叉树bt BiThrTree father p=bt; int flag; while(p!=null) while(p >ltag== ) p=p >lchild; // 沿左分枝向下 if(p >rtag== ) flag= ;//左孩子为线索 右孩子为链 相当从左返回 else flag= ; //p为叶子 相当从右返回 while(flag== ) visit(*p);//访问结点 if(IsRightChild(p father)) p=father; flag= ; //修改p指向双亲 else //p是左子女 用最右子孙的右线索找双亲 p=RightMost(p); if(p&&p >rtag== ) flag= ; else flag= ; // while(flag== ) if(flag== && p!=null) p=p >rchild; //转向当前结点右分枝 //结束PostOrderInThr
cha138/Article/program/sjjg/201311/23691相关参考
知识大全 数据结构考研分类复习真题 第六章 答案 (五)[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