数据结构:树与二叉树(2)

1、线索二叉树

1.1线索二叉树的定义

(1)线索二叉树有啥用?

普通二叉树的节点包含左孩子和右孩子的信息,但并没有直接存储关于"直接前驱"和"直接后继"的信息,结点的前驱和后继只能在遍历过程中获得。

因此这里引入线索二叉树,线索二叉树会额外存储前驱和后继的信息,从而能够在常规操作之外快速找到节点的前驱或后继。

(2)定义

空指针域的利用

利用二叉链表中的空指针域保存信息

1)若结点有左子树,则lchild指向其左孩子;否则,lchild指向其直接前驱

2)若结点有右子树,则lchild指向其右孩子;否则,lchild指向其直接后继

标志位的引入

为了区分 lchildrchild 域中的指针究竟是指向孩子节点还是指向前驱/后继节点,在线索二叉树中为每个节点增加了两个标志位 LTagRTag。
LTag=0, lchild 域指向左孩子
LTag=1, lchild 域指向其前驱
RTag=0, rchild 域指向右孩子
RTag=1, rchild 域指向其后继

例如我们有这样一棵二叉树

那么它的先序遍历就是ABCDE
它的线索二叉树如下图:

它的中序遍历是:BCAED

线索二叉树如下图:

它的后续遍历是:CBEDA

线索二叉树如下图:

相关推荐
汤姆爱耗儿药3 分钟前
数据结构——散列表
数据结构·散列表
UnderTheTime5 分钟前
2025 XYD Summer Camp 7.10 筛法
算法
zstar-_5 分钟前
Claude code在Windows上的配置流程
笔记·算法·leetcode
圆头猫爹20 分钟前
第34次CCF-CSP认证第4题,货物调度
c++·算法·动态规划
秋说23 分钟前
【PTA数据结构 | C语言版】出栈序列的合法性
c语言·数据结构·算法
用户403159863966337 分钟前
多窗口事件分发系统
java·算法
用户403159863966340 分钟前
ARP 缓存与报文转发模拟
java·算法
hi0_61 小时前
03 数组 VS 链表
java·数据结构·c++·笔记·算法·链表
aPurpleBerry1 小时前
hot100 hot75 栈、队列题目思路
javascript·算法
ChoSeitaku1 小时前
NO.3数据结构栈和队列|顺序栈|共享栈|链栈|顺序队|循环队列|链队|双端队列|括号匹配|中缀表达式转后缀|后缀表达式求值
数据结构·microsoft