做习题,学知识--线索二叉树

本文解析了二叉树线索化后无法有效解决的问题,重点讨论了后序线索二叉树中求后序后继的难点,并通过实例说明了原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二叉树在线索化后,仍不能有效求解的问题是()

A、先序线索二叉树中求先序后继    

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

C、中序线索二叉树中求中序前驱    

D、后序线索二叉树中求后序后继

因为有同学问到:线索二叉树的结构不是会多出两个指针域来存放前驱和后继的吗?

那么我们先来看看在严蔚敏老师的数据结构教材中对线索二叉树的定义:

从书中我们可以得出,线索二叉树的确多出了两个指针域 LTag 和 RTag,但不是用来存放结点前驱、后继,而是指示左右孩子是否存在。

那么我们开始分析题目:

首先,我们要先对树的遍历有一定的了解,不清楚的伙伴可以查看我的历史文章 【数据结构】二叉树的中序遍历 。

先序遍历(中左右)、中序遍历(左中右)的最后访问的节点都是左或右叶节点,叶节点是没有子树的,所以两个指针域空出来了,可以存放线索指针。但是后序遍历(左右中),最后访问的是子树的根节点,而子树根节点的指针域指向了子树,所以不可能空出来存放线索信息。

举个例子:

对于上面这棵树,它的遍历结果是这样子的:

先序遍历:A->B->D->E->C->F->G
中序遍历:D->B->E->A->F->C->G
后序遍历:D->E->B->F->G->C->A

A选项中,
结点 A->B->D 这串可以从子指针得到
结点 D->E->C 由于子指针是空的,可以从子指针生成线索

结点 C->F->G 由上可得

同理,也能解得 B、C 选项的正确性。

而对于 D 选项,

结点 C->A 是不可能达到,因为结点 C 的左右儿子都是满的,已经没有地方存线索,所以不可能线索化。

因此答案就出来了:选 D 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暗星涌动

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

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

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

打赏作者

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

抵扣说明:

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

余额充值