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

1、线索二叉树

1.1线索二叉树的定义

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

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

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

(2)定义

空指针域的利用:

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

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

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

标志位的引入:

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

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

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

它的中序遍历是:BCAED

线索二叉树如下图:

它的后续遍历是:CBEDA

线索二叉树如下图:

相关推荐
其实防守也摸鱼31 分钟前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
小超人诞生日记2 小时前
C++ 智能指针的使用及其原理详解
c++·算法
lisw053 小时前
互联网上的数据结构可视化!
数据结构·信息可视化
AiNightVision5 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.3336 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
小郎君6586 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
JJJennie7777 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
東隅已逝,桑榆非晚7 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
专注仿真7 小时前
卷积神经网络(CNN)算法详解
人工智能·python·算法·代码·大模型训练