数据结构学习笔记-线索二叉树
来源:互联网 发布:mysql 新建数据库 编辑:程序博客网 时间:2024/05/15 05:18
线索二叉树
二叉树遍历的实质:以一定的规则将一个非线性结构进行线性化操作,使每个结点在这些线性序列中有且仅有一个直接前驱和直接后继。但是,当以二叉链表为存储结构时只能在遍历的过程中才能得到结点的前驱、后继,为了存储这种信息。引入线索二叉树。
根据二叉树的性质有:n0=n2+1,空链域:2n0+n1(也就是叶子结点有2个空链域,度为1的结点有1个空链域)另外有n=n0+n1+n2因此,有n个结点组成的二叉树中,有n+1个指针是空指针。二叉树的线索化就是将这些空指针进行修改的过程。
线索二叉树的结点中分别添加了LTag和RTag标志域
结点的结构为lchild、LTag、data、RTag、rchild,以这种结点结构构成的二叉链表作为二叉树的存储结构,叫做线索链表,其中指向结点前驱和后继的指针,叫做线索。对二叉树以某种次序遍历使其变为线索二叉树的过程叫做线索化。
线索二叉树的产生
构造线索二叉树和构造普通的二叉树方法相似,区别有两点:
1>结点结构不同
2>构造线索二叉树时,若有左右孩子结点,还要给左右标志赋值0(Link)
需要注意的是对一棵给定的二叉树,其先序、中序、后序和层序遍历的顺序是不同的。显然,其线索化的操作和遍历的操作也是不同的。下面以中序线索二叉树为例进行说明。
中序线索二叉树的存储结构和普通二叉树的存储结构,区别有三点:
1>线索二叉树多了一个头结点。其左孩子指针指向根结点,右孩子指针指向中序遍历的最后一个结点。
2>它每个结点的左右孩子指针都不是空指针。在没有孩子的情况下分别指向该结点的前驱和后继
3>中序遍历的第1个结点的左孩子指针(线索)和最后1个结点的右孩子指针(线索)都指向头结点。其目的是标志遍历的起点和终点。
生成中序线索二叉树分两步:
1>产生线索链表
2>将链表线索化
首先,给出产生线索链表的代码,以及用到的结构体
- 数据结构学习笔记 --- 线索二叉树
- 数据结构学习笔记-线索二叉树
- 【学习笔记----数据结构11-线索二叉树】
- 数据结构学习笔记 --- 线索二叉树
- 数据结构-->线索二叉树
- 数据结构--线索二叉树
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 数据结构 - 线索二叉树
- 线索二叉树-数据结构
- 【数据结构】线索二叉树
- 数据结构-线索二叉树
- 数据结构--线索二叉树
- 数据结构---线索二叉树
- 数据结构---线索二叉树
- 数据结构--线索二叉树
- [数据结构]线索二叉树
- 【笔记】线索二叉树
- 让memcached和mysql更好的工作
- codechef Johnny and the Beanstalk 题解
- MySQL存储引擎InnoDB、MyISAM 、其它存储引擎介绍
- iOS 开发和部署过程概述
- Sqlite3,C++开发详解
- 数据结构学习笔记-线索二叉树
- mahout将数据转化成序列化文件、稀疏向量
- ORACLE分页查询SQL语法——最高效的分页
- 跨行清算系统的实现过程
- hdu Tunnel Warfare(线段树)
- 就是找一个温暖的人过一辈子
- Android图形合成和显示系统---基于高通MSM8k MDP4平台
- Linux /dev目录详解
- 秋衣春生