【数据结构笔记12】数据结构之线索二叉树介绍及其线索化(构造线索二叉树、寻找前驱、后继结点)

本文深入探讨了线索二叉树的概念,包括前驱和后继结点、线索二叉树的分类及存储结构。文章详细阐述了如何构造中序、先序和后序线索二叉树,并提供了寻找不同遍历序列中结点的前驱和后继结点的方法。内容覆盖了线索二叉树的优势和实际应用,旨在帮助读者理解和掌握这一数据结构。

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

这篇文章,主要介绍数据结构之线索二叉树介绍及其线索化。

目录

一、线索二叉树

1.1、前驱和后继结点

1.2、什么是线索二叉树

1.3、线索二叉树的分类

(1)三种线索二叉树

(2)什么是线索化

(3)线索二叉树案例

1.4、线索二叉树的存储结构

二、线索二叉树的构造

2.1、构造中序线索二叉树

三、中序线索二叉树

3.1、寻找中序后继结点

(1)具体思想

(2)代码实现

3.2、寻找中序前驱结点

(1)具体思想

(2)代码实现

四、先序线索二叉树

4.1、寻找先序后继结点

(1)具体思想

(2)代码实现

4.2、寻找先序前驱结点

(1)具体思想

(2)代码实现

五、后序线索二叉树

5.1、寻找后序后继结点

(1)具体思想

(2)代码实现

5.2、寻找后序前驱结点

(1)具体思想

(2)代码实现


一、线索二叉树

1.1、前驱和后继结点

二叉树如果使用二叉链表的方式实现,那么具有n个结点的二叉树,就会存在【n+1】个空链域,如果我们可以利用这【n+1】个空链域来保存一些数据,那么这样不仅可以节约内存空间,而且可以提高二叉树的查找效率。

那么这些空链域用来保存什么数据呢???

我们可以看到,二叉链表可以快速的找到某个结点的左孩子、右孩子,但是如果要寻找某个结点的前驱、后继结点的时候,就需要从根结点开始遍历,这需要【O(n)】的时间复杂度,这个时候,我们如果可以将【n+1】个空链域用来保存当前结点的前驱和后继结点,那么查找的时候,只需要花费【O(1)】的时间复杂度。

这里的前驱和后继结点如何得知???

这里的前驱结点、后继结点,指得是二叉树在某个遍历序列中的前后结点,什么意思呢,下面看个案例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr.小朱同学

随心赞赏,助力前行

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

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

打赏作者

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

抵扣说明:

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

余额充值