树 - 线索二叉树 (四)

 我来答
华源网络
2022-09-22 · TA获得超过5689个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:163万
展开全部

  ( ) 在后序线索二叉树中 查找指定结点*p的后序前趋结点

  在后序线索二叉树中 查找指定结点*p的后序前趋结点的具体规律是

  ① 若*p的左子树为空 则p >lchild是前趋线索 指示其后序前趋结点

  【例】在下图所示的后序线索二叉树中 H的后序前趋是B F的后序前趋是C

  

  ② 若*p的左子树非空 则p >lchild不是前趋线索 由于后序遍历时 根是在遍历其左右子树之后被访问的 故*p的后序前趋

  必是两子树中最后一个遍历结点

  当*p的右子树非空时 *p的右孩子必是其后序前趋

  【例】在上图所示的后序线索二叉树中 A的后序前趋是E;

  当*p无右子树时 *p的后序前趋必是其左孩子

  【例】在上图所示的后序线索二叉树中 E的后序前趋是F

  ( ) 在后序线索二叉树中 查找指定结点*p的后序后继结点

  具体的规律

  ① 若*p是根 则*p是该二叉树后序遍历过程中最后一个访问到的结点 *p的后序后继为空

  ② 若*p是其双亲的右孩子 则*p的后序后继结点就是其双亲结点

  【例】上图所示的后序线索二叉树中 E的后序后继是A

  ③ 若*p是其双亲的左孩子 但*P无右兄弟 *p的后序后继结点是其双亲结点

  【例】上图所示的后序线索二叉树中 F的后序后继是E

  ④ 若*p是其双亲的左孩子 但*p有右兄弟 则*p的后序后继是其双亲的右子树中第一个后序遍历到的结点 它是该子树中 最

  左下的叶结点

  【例】上图所示的后序线索二叉树中 B的后序后继是双亲A的右子树中最左下的叶结点H

  注意

  F是孩子树中 最左下 结点 但它不是叶子

  由上述讨论中可知 在后序线索树中 仅从*p出发就能找到其后序前趋结点;要找*p的后序后继结点 仅当*p的右子树为空时

   才能直接由*p的右线索p >rchild得到 否则必须知道*p的双亲结点才能找到其后序后继 因此 如果线索二叉树中的结点没有指

  向其双亲结点的指针 就可能要从根开始进行后序遍历才能找到结点*P的后序后继 由此 线索对查找指定结点的后序后继并无多大

  帮助

  ( ) 在前序线索二叉树中 查找指定结点*p的前序后继结点

  【参见练习】

  ( ) 在前序线索二叉树中 查找指定结点*p的前序前趋结点

  【参见参考书】

  在前序线索二叉树中 找某一点*p的前序后继也很简单 仅从*p出发就可以找到;但找其前序前趋也必须知道*p的双亲结点

  当树中结点未设双亲指针时 同样要进行从根开始的前序遍历才能找到结点*p的前序前趋

   遍历线索二叉树

  遍历某种次序的线索二叉树 只要从该次序下的开始结点开发 反复找到结点在该次序下的后继 直至终端结点

  遍历中序线索二叉树算法

  void TraverseInorderThrTree(BinThrTree p)

  { //遍历中序线索二叉树

  if(p){//树非空

  while(p >ltag==Link)

  p=p >lchild; //从根往下找最左下结点 即中序序列的开始结点

  do{

  printf( %c p >data); //访问结点

  p=InorderSuccessor(p); //找*p的中序后继

  }while(p)

  }//endif

  }//TraverselnorderThrTree

  分析

  ① 中序序列的终端结点的右线索为空 所以do语句的终止条件是p==NULL

  ② 该算法的时间复杂性为O(n) 因为是非递归算法 常数因子上小于递归的遍历算法 因此 若对一棵二叉树要经常遍历 或

  查找结点在指定次序下的前趋和后继 则应采用线索链表作为存储结构为宜

  ③ 以上介绍的线索二叉树是一种全线索树(即左右线索均要建立) 许多应用中只要建立左右线索中的一种

  ④ 若在线索链表中增加一个头结点 令头结点的左指针指向根 右指针指向其遍历序列的开始或终端结点会更方便

lishixinzhi/Article/program/sjjg/201311/23874

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式