知识大全 数据结构考研分类复习真题 第六章 答案 (五)[48]

Posted 结点

篇首语:少年意气强不羁,虎胁插翼白日飞。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[48]相关的知识,希望对你有一定的参考价值。

   .[题目分析]在中序穿线二叉树中 求某结点p的后序后继q 需要知道p的双亲结点f的信息 (中序线索树的性质 若p是f的左子女 则f是p的最右子孙的右线索 若p是f的右子女 则f是p的最左子孙的左线索 )找到f后 若p是f的右子女 则p的后继是f 若p是f的左子女 且f无右子女 则p的后继也是f 若p是f的左子女 且f有右子女 则f的右子树中最左边的叶子结点是p的后继 因此 算法思路是 先找p的双亲f 根据p是f的左/右子女再确定p的后序后继

  BiThrTree InThrPostSucc(BiThrTree r p)  //在中序线索二叉树r上 求结点p(假定存在)的后序后继结点q)  if(p==r)return(null)     //若p为根结点 后序后继为空  T=p  while(T >LT== ) T=T >LL; //找p的最左子孙的左线索  q=T >LL;                 //q是 p最左子孙的左线索 是p的祖先  if(q >RL==p) return(q);  //p是q的右子女 则q是p后序后继   T=p;  while(T >RT== ) T=T >RL; //找p的最右子孙的右线索  q=T >RL;                 //q是p最右子孙的右线索  if(q >LL=p)              //若p是q的左子女  if(q >RT== ) return(q);//若p是q的左子女且q无右子女 则p的后序后继是q  else     //p的双亲q有右子树 则q的右子树上最左下的叶子结点是p的后继  q=q >RL;  while(q >LT== ||q >RT== )  //找q右子树中最左下的叶子结点  while(q >LT== ) q=q >LL; //向左下  if(q >RT== ) q=q >RL;    //若q无左子女但有右子女 则向右下 直到叶子结点    return(q); //q是的p后继     //结束InThrPostSucc

  [算法讨论] 请注意本题条件 标记为 时是线索 而为 时是指向子女

cha138/Article/program/sjjg/201311/23690

相关参考

知识大全 数据结构考研分类复习真题 第六章 答案 (五)[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