为什么先序/中序线索二叉树不需要栈的支持,而后序线索二叉树需要栈的支持?

为什么先序/中序线索二叉树不需要栈的支持,而后序线索二叉树需要栈的支持?

首先要明确两点
先序线索二叉树的缺点:无法找到先序序列中某结点的前驱
后序线索二叉树的缺点:无法找到后序序列中某结点的后继

中序线索二叉树先序线索二叉树后序线索二叉树
找前驱×
找后继×

问题的重点不在叶子结点,因为叶子结点的空链域指向了它的前驱和后继,无需外界提供特别的支持就能找到其前驱和后继,所以问题的根源其实在于非叶子结点

下图我们以先序线索树为例,先序线索树只能找后继,1的后继为2,2为1的左孩子。5的后继为6,6为5的左孩子,故先序二叉树中所有结点均可找到其后继结点。而若要在先序线索二叉树中找前驱,则需要将其改为三叉链表。

下图我们以中序线索树为例,中序线索树既可以找前驱也可找后继,2的前驱为1,1为2的左孩子,2的后继为3,3为2的右孩子。故先序二叉树中所有结点均可找到其前驱和后继结点,无需其他工具的支持即可完成寻找前驱和后继结点的工作

下图我们以后序线索树为例,后序线索树只能找前驱,6的后继为7,但6的两个指针域中一个指向了它的前驱5,一个指向了4,由于没有第三个指针(所以用三叉链表可以解决此问题)故无法找到其后继,需要借助其他工具(如栈)帮助完成

下图为后序遍历过程,我们可以通过栈来获得后序线索二叉树中所有结点的后继,下述过程依次输出1234567

  • 35
    点赞
  • 159
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Uncertainty!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值