一、树的基本概念
- 空树:树是n个节点的有限集。n=0,称为空树。
- 根结点:任意一个非空树中,应满足有且仅有一个根结点。
- 树的根节点没有前驱,除根结点外的所有结点有且仅有一个前驱
- 树中所有结点可以有零个或多个后继。
二、树的基本术语
- 双亲:一个结点的前驱结点
- 兄弟:有相同双亲(前驱)结点的结点
- 堂兄弟:同层的结点
- 孩子:一个结点的后继结点
- 度:有几个孩子就是度为几的结点
- 分支节点:度大于0的结点
- 叶子结点:度为0的结点
- 深度和高度: 数值上相同。
- 深度:从上往下,从根结点开始算第一层,到最下面的层数。
- 高度,从下往上,从最底层开始往上树
- 路径:树中两结点之间的路径由这两个结点之间所经过的结点序列构成的。
- 路径长度:路径上所经过的边的个数。
- 森林:m棵互不相交的树的集合
三、树的性质(常考)
四、m叉树和度为m的树的区别
4.1 度为m的树
- 至少有一个结点度为m
- 一定为非空树,至少有m+1个结点
4.2 m叉树
- 允许所有结点<m
- 可以是空树
4.3 树高h的至少结点问题(重要)
- 度为m高为h的树至少有h+m-1个结点
- 高度为h的m叉树至少有个h结点
五、树的性质经典例题(重要)
-
5.1 例题一:含有n个结点的三叉树的最小高度?
-
5.2 例题二: 已知一颗度为4的树中,度为0,1,2,3的结点数分别为14,4,3,2,求该树的结点总数n和度为4的结点个数?
六、普通二叉树
6.1 二叉树定义
- 一种常考的树形结构,特点就是每个结点至多只有两个子树。不存在度大于2的结点
- 可以为空,也就是空二叉树,结点n=0;
- 可以由一颗根节点和两个互不相交的左子树和右子树组成。左子树和右子树分别为一颗二叉树
- 二叉树一定是有序树,左右子树颠倒就不是另外一颗二叉树。
6.2 二叉树性质
这三个性质对于所有的二叉树都是通用的,尤其是第一个经常考
6.3 二叉树顺序存储结构和链式存储结构
- 顺序存储结构
- 放在一组地址连续的一维数组中,数据之间的关系用下标体现出来。
- 比较适合完全二叉树和满二叉树
- 链式存储结构
- 弥补顺序存储资源利用率低的问题。一般采用链式居多,考的也多。
- 用二叉链表结点存储二叉树的结点。包括 数据域data,左指针域lchild,右指针域rchild
七、满二叉树
7.1 满二叉树定义
一棵树高度为h,且含有2的h次方-1个结点的二叉树。树中每层都含有最多结点。
7.2 满二叉树的性质
八、完全二叉树
8.1 完全二叉树概念
高度为h且有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应。
8.2 完全二叉树的性质
九、二叉排序树
左子树的所有树的结点均小于根结点,右子树的所有树的结点大于根结点。
十、平衡二叉树
任一结点上左子树和右子树深度之差不超过1
平衡二叉树和二叉排序树会在树的应用中进行广泛的应用