5.1.1 树的定义和基本术语
1、树的基本概念
非空树:
-
A是C的前驱,C是A的后继
-
根节点:非空树只有一个根节点,根节点没有前驱
-
除了根结点外,任何一个结点有且仅有一个前驱,有两个前驱的不是树,而是叫做图或者网!
-
每个结点可以有0个或多个后继
-
分支结点:有后继的结点
-
叶子结点:没有后继的结点
空树:
子树:
-
每棵子树互不相交
-
树是一种递归定义的数据结构
2、结点之间的关系描述
- 两个结点之间的路径:只能从上往下
- 路径长度:经过几条边
- 结点的层次(深度):从上往下数(默认从1开始,具体看题目)
- 结点的高度:从下往上数
- 树的高度(深度):总共多少层
- 结点的度:有几个孩子(分支)
- 树的度:各结点的度的最大值
3、有序树和无序树
4、树和森林
森林:
考点:树和森林之间的相互转化问题
5、知识回顾与重要考点
5.1.2 树的常考性质
1、6个常考考点
- 考点1:结点数=总度数+1:
比如A有3个度(分支),结点数=3+1=4
- 考点2:度为m的树和m叉树的区别:
树的度:各结点度的最大值;m叉树:每个结点最多只能有m个孩子,可以为空树
- 考点3:度为m的树第i层最多有m^i-1个结点:
下图为度为3的树
- 考点4:高度为h的m叉树至多有m^h-1/m-1个结点:
也就是m0+m1+m2+m3…可以用等比数列求和公式来求 - 考点5:高度为h的m叉树至少有h个结点(从根结点一直往下,每个结点都只有一个孩子);高度为h、度为m的树至少有h+m-1个结点(最少有一个结点有m个孩子,-1是因为h中包含了其中一个孩子,可以看下图)
高度为h的m叉树至少有h个结点:
高度为h、度为m的树至少有h+m-1个结点:
- 考点6:具有n个结点的m叉树的最小高度为[logm(n(m-1)+1)]
- 求具有n个结点的m叉树的最小高度,也就是让n个结点的m叉树组成最小高度,那么就尽可能让树的宽度更宽,最宽就是所有结点都有m个孩子
- 假设树的最小高度为h,高度为h的树最多有(m^h-1)/m-1个结点,那么结点数n一定会大于h-1层(最小为h层)的结点,并且小于等于h层最多的结点
- 利用这些关系即可求得h得最小值