数据结构:树与二叉树(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

线索二叉树如下图:

相关推荐
凯子坚持 c7 分钟前
动态规划专题:详解二维费用背包问题——以“一和零”与“盈利计划”为例
算法·动态规划
黑色的山岗在沉睡15 分钟前
P1948 [USACO08JAN] Telephone Lines S
数据结构·c++·算法·图论
快去睡觉~1 小时前
力扣301:删除无效的括号
数据结构·算法·leetcode
技术炼丹人2 小时前
从RNN为什么长依赖遗忘到注意力机制的解决方案以及并行
人工智能·python·算法
闪电麦坤953 小时前
数据结构:反转链表(reverse the linked list)
数据结构·链表
NfN-sh3 小时前
计数组合学7.12( RSK算法的一些推论)
笔记·学习·算法
ikkkkkkkl3 小时前
LeetCode:15.三数之和&&18.四数之和
c++·算法·leetcode
屁股割了还要学3 小时前
【数据结构入门】链表
c语言·开发语言·数据结构·c++·学习·算法·链表
Mr数据杨3 小时前
数据与模型优化随机森林回归进行天气预测
算法·随机森林·回归
chen1114 小时前
有关人工智能(AI)的搜索算法(CS50)
算法