二叉树在线索化后仍不能解决的问题 ; 二叉线索树选项辨析

二叉树在线索化后

能解决的问题:
A.先序线索二叉树中求先序后继
B.中序线索二叉树中求中序后继
C.中序线索二叉树中求中序前驱

仍不能解决的问题
D.后序线索二叉树中求后序后继

二叉树线索化:对于一个结点,若无左孩子,则将左孩子指针(空链域)指向结点前驱;若无右孩子,则将右孩子指针(空链域)指向结点后继;

“利用链表的空链域”

A.先序线索二叉树中,一个结点的后继,是其子树;欲找其子树,
如果是[情况1]有左子树(只要有左子树,(仅有左子树和同时有左右子树的情况相同)后继一定是先左子树)从其左孩子指针中找;✅
如果是[情况2]仅有右子树:从其右孩子指针中找;✅
如果是[情况3]无左右子树:后继是其祖先的右孩子(如果当前是祖先的左孩子)或空(如果当前是祖先的右孩子,自己又无孩子,已到达遍历终点),这时用右孩子指针(为空)指向其后继(祖先的右孩子或NULL),因为右孩子指针为空,不冲突;✅

存在问题:
D.后序线索二叉树中求后序后继
后序线索二叉树中,一个结点的后继,是其祖先的右孩子(如果当前是祖先的左孩子)或祖先(如果当前是祖先的右孩子)

但不管该结点是祖先的左孩子,还是该结点是祖先的右孩子,都不影响“该结点可以有左右子树”;当该结点有右子树时,其右孩子结点指针被占用,永远无法指向其后继;

B.C.选项辨析

中序线索二叉树中,一个结点的前驱是其祖先(若其无左子树,且结点为祖先的右孩子(若否,为NULL,该结点在中序遍历的首位)),或其左子树的最右下结点(若其有左子树),
= = = =
C.中序线索二叉树中求中序前驱

若其有左子树,前驱为左子树的最右下结点,存放在左孩子指针 ✅

若其无左子树,则左孩子指针为空,前驱为祖先或空,存放在左孩子指针✅

全部两种情况不产生冲突;
= = = = =

中序线索二叉树中,一个结点的后继是其右孩子(若有右子树),其右边节点(若其无右子树)

B.中序线索二叉树中求中序后继

当有右孩子时,其后继是其右孩子。当无右孩子时,右孩子指针为空,可用于指向后继,不产生冲突✅

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值