1.先说树的概念:
由结点或者是顶点和边组成的,可能是非线性的,但是绝不存在任何环组成的数据结构
2.树的基本组成概念:
英文 | 中文 | 描述 |
|---|---|---|
| Root | 根结点 | 树的顶端结点,没有父结点的结点 |
| 叶子结点(终端结点) | 没有孩子的结点 | |
| 度 | 结点拥有的子树个数成为结点的度 | |
| 边 | 一个结点和另外一个结点的连接成为边 | |
| 路径 | 连接结点和后台节点的序列 | |
| 层次 | 结点的层次由根开始,根是第0层,根的第一个子结点在第一层 假如一个结点在第i层,那么其子树的根结点在第i+1层 | |
| 结点的高度 | 结点的高度是到最长路径的子结点之间的边的个数,最大距离 | |
| 树的高度 | 树的高度就是根结点的高度 | |
| 结点的深度 | 节点的深度是从根节点到其的路径的边的个数 树的深度指的是树的最大层数 | |
结点的高度和深度对比:
- 高度,从下到上,类比记忆,比如楼多高,从下往上数一层两层;根结点的高度就是树的高度
- 深度由上往下,从根结点到他的路径的边的个数,树的高度就是树的最大层数
解释图中标红部分
3. 二叉树部分:
定义:最多拥有两个子树,即不存在度大于2的结点,并且有左右之分
二叉树的性质:
- 结点数量:如果树的层次定义从0开始,那么第i层最多拥有2^i个结点(i>=0)。
- 高度:高度为k的二叉树,最多拥有2^(k+1) - 1个结点(k>=-1)。 (空树的高度为-1),此时是个满二叉树
- 度:如果叶子节点个数为m,度为2的结点个数为n,那么m=n+1
完美二叉树:树的高度为k,结点树为2^(k+1) - 1,那么此时是完美二叉树,国内翻译叫满二叉树,就是除了叶子结点外,所有的结点都有左右子节点
图1
完全二叉树:除了最后一层结点外,其余结点都是满二叉树,并且最后一层的结点都靠左对齐
图2
完满二叉树:所有非叶子结点的度都是2,换句话说,只要有孩子,就是两个孩子
图3
中文 | 英文 | 定义描述 |
|---|---|---|
| 完美二叉树(满二叉树) | perfect binary tree | 除了叶子结点外每一个结点都有两个孩子 |
| 完全二叉树 | complete | 除了最后一层外,所有结点都有两个孩子 |
| 完满二叉树 | full | 只要有孩子,就得是两个孩子 |
完美二叉树肯定是完全二叉树,也肯定是完满,但反之不一定
完全二叉树可能是完满二叉树,完满二叉树也可能是完全二叉树 。图2都满足
既是完全二叉树又是完满二叉树,也不一定是完美二叉树,图2就是这种情况