读书笔记之《数据结构》---第六章 树和二叉树

本章目录
1.树的定义和基本术语
2.二叉树
3.遍历二叉树和线索树
4.树和森林
5.树与等价问题
6.赫夫曼树及其应用
7.回溯法与树的遍历
8.树的计数

树的定义和基本术语
任意一颗非空树中:
1.有且仅有一个特定的称为根的结点
2.当n>1时,其余结点可分为m个互不相交的子树

树的结点包含一个数据元素及若干指向其子树的分支,结点拥有的子树数称为结点的度,度为0的结点称为叶子结点,度不为0的结点称为分支结点,树的度是树内各结点的度的最大值,结点的子树的根称为该结点的孩子,该结点称为孩子的双亲,同一个双亲的孩子之间互称为兄弟,结点的祖先是从根到该结点所经分支上的所有结点,双亲在同一层的结点互为堂兄弟,树中结点的最大层次称为树的深度,

二叉树
二叉树是每个结点至多只有两颗子树的树。
二叉树的5中基本形态:
在这里插入图片描述

二叉树的性质:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一颗深度为k且有2^k - 1个结点的树称为满二叉树,当且仅当每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二叉树的存储结构:
1.顺序存储结构:用一组地址连续的存储单元依次自上而下、自左而右存储完全二叉树的结点元素,在最坏情况下一个深度为k且仅有k个结点的单支树需要长度为2^k - 1的一维数组。
在这里插入图片描述
在这里插入图片描述
2.链式存储结构:不同的结点结构形成不同的链式存储结构,一般二叉树链表中的结点至少包含3个域,数据域和左右指针域。

遍历二叉树和线索二叉树
遍历二叉树分为3中情况:先根遍历、中根遍历和后根遍历。
先根遍历递归算法:
在这里插入图片描述

两个中序遍历的非递归算法:
算法思想:
1.从根出发,走到整棵树最左边的结点,
2.访问该结点,
3.然后判断该结点有没有右孩子,如果有,走到以该右孩子为根节点的子树的最左边结点,如果没有,退回到该结点的父节点。
4.重复2,3
在这里插入图片描述
在这里插入图片描述

线索二叉树:当结点有左子树时lchild指向其左孩子,否则指向其前驱,当结点有右子树时rchild指向其右孩子,否则指向其后继。
在这里插入图片描述
指向结点前驱后继的指针称为线索。
在这里插入图片描述

二叉树的线索化:实质上是将二叉链表中的空指针改为指向前驱或后继的线索。
在这里插入图片描述
在这里插入图片描述

树和森林

树的存储结构:
1.双亲表示法:以一组连续的控件存储树的结点,每个结点中附设一个指示器指示其双亲结点在链表中的位置。
在这里插入图片描述
在这里插入图片描述
2.孩子表示法:每个结点有多个指针域,每个指针指向一颗树的根节点
在这里插入图片描述
在这里插入图片描述
3.孩子兄弟表示法:链表中结点的两个链域分别指向该结点的第一个孩子和下一个兄弟结点
在这里插入图片描述

树与二叉树的对应关系:采用孩子兄弟表示法将树变为二叉树
在这里插入图片描述
森林与二叉树的转换:
用孩子兄弟表示法,将森林转换成二叉树
在这里插入图片描述

树的遍历:先根和后根遍历两种,遍历对象就是树本身。
森林的遍历:先序和中序两种,遍历对象是森林的孩子兄弟二叉树。森林的中序遍历相当于树的后根遍历

树与等价问题
什么是等价关系:集合S中的关系R是自反的、对称的和传递的,则称它为一个等价关系。
举例说明:
例1:三角形相似关系,三角形A与其本身相似,满足自反性,A与B相似,则B与A相似,满足对称性,A与B相似,B与C相似,则A与C形式,满足传递性。所以三角形相似关系是等价关系。每一种不相似的三角形被划分为一个相似类。
例2:R为模3取余关系。集合S={1,2,3,4,5,6,7,8},其中{1},{4},{7}。自身都满足模3取余等于1等价类,等价类可划分为模3余1和模3余2及模3余0三个等价类。

划分等价类需要对集合进行的操作有3个:
1.构造只含单个成员的集合
2.判定某个单元素所在的子集
3.归并两个互不相交的集合为一个集合

本节看完并没有理解树与等价关系之间的关系,不知道本节需要我们掌握什么。

赫夫曼树及其应用
从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称为路径长度。
树的路径长度是从树根到每一个结点的路径长度之和。
结点的带权路径长度是从该结点到树根之间的路径长度与结点上权的乘积。
树的带权路径长度是树中所有叶子结点的带权路径长度之和。
假设有n个权值{w1, w2, w3, …,wn},构造一个有n个叶子结点的二叉树。每个叶子结点带权值为wi,其中带权路径长度WPL最小的二叉树称做最优二叉树或赫夫曼树。

构造最优二叉树的方法:
1.将n个权值构造成n棵只有带权为wi的根节点的树。
2.从中选择两个权值最小的树作为左右子树构造一棵新的二叉树,根节点的权值为左右子树根节点权值之和。
3.用新树代替以上的左右子树,重复2,3步骤。

赫夫曼编码:赫夫曼编码中任一一个字符的编码都不能是其他字符编码的前缀。
在这里插入图片描述
在这里插入图片描述

回溯法与树的遍历
回溯法是设计递归程序的一种重要方法,它的求解过程实质上是一个先序遍历一个“状态树”的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历过程中。
例如:求含n个元素的集合的幂集。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

树的计数
二叉树相似是指,两者都为空树或者两者都不为空树,且它们的左右子树分别相似。
二叉树等价是指,两者不仅相似,而且所有对应结点上的数据元素均相同。
在这里插入图片描述

通过二叉树的前序序列和中序序列可以确定整棵二叉树。
在这里插入图片描述

由二叉树的计数可推得树的计数,将森林或树转换成二叉树,则具有n个结点有不同形态的树的数目tn和具有n-1个结点互不相似的二叉树的数目相同。

猜你喜欢

转载自blog.csdn.net/qq_25744595/article/details/83001098