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

Posted 结点

篇首语:一身转战三千里,一剑曾百万师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[39]相关的知识,希望对你有一定的参考价值。

   [题目分析]在中序全线索化T树的P结点上 插入以X为根的中序全线索化二叉树 要对X有无左右子树进行讨论 并修改X左(右)子树上最左结点和最右结点的线索 在中序线索树上查找某结点p的前驱的规律是 若p >ltag= 则p >lchild就指向前驱 否则 其前驱是p的左子树上按中序遍历的最后一个结点 查找某结点p的后继的规律是 若p >rtag= 则p >rchild就指向后继 否则 其后继是p的右子树上按中序遍历的第一个结点

  int TreeThrInsert(BiThrTree T P X)  //在中序全线索二叉树T的结点P上 插入以X为根的中序全线索二叉树 返回插入结果信息   if(P >ltag== && P >rtag== ) printf( P有左右子女 插入失败\\n ) return( );   if(P >ltag== )    //P有左子女 将X插为P的右子女  if(X >ltag== ) X >lchild=P;  //若X无左子树 X的左线索(前驱)是P  else  //寻找X的左子树上最左(下)边的结点  q=X >lchild;  while(q >ltag== ) q=q >lchild;  q >lchild=P;    if(X >rtag== )    //修改X的右线索  X >rchild=P >rchild;  //将P的右线索改为X的右线索  else  //找X右子树最右面的结点  q=X >rchild; while(q >rtag== ) q=q >rchild;  q >rchild=P >rchild;    P >rtag= ;P >rchild=X;   //将X作为P的右子树   //结束将X插入为P的右子树  else    //P有右子女 将X插入为P的左子女  if(X >ltag== )    //X无左子女  X >lchild=P >lchild;  //将P的左线索改为X的左线索  else    //X有左子女 找X左子树上最左边的结点  q=X >lchild;  while(q >ltag== ) q=q >lchild;  q >lchild=P >lchild;    if(X >rtag== ) X >rchild=P;   //若X无右子树 则X的右线索是P  else      //X有右子树 查其右子树中最右边的结点 将该结点的后继修改为P  q=X >rchild;  while(q >rtag== ) q=q >rchild;  q >rchild=P;    P >ltag= ; //最后将P的左标记置   P >lchild=X; //P的左子女链接到X   //结束将X插入为P的左子女    //结束Tree Thrfnsert

cha138/Article/program/sjjg/201311/23695

相关参考

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