文章目录
1 概述
1.1 树
- 树结构:是一种非常重要的 非线性结构,该结构中一个数据元素可以有两个或两个以上的直接后继元素,可以用来描述客观世界中广泛存在的层次关系。
- 树结构示意图如下:
专业名词 | 解释 | 举例 |
---|---|---|
根结点 | 又称 开始结点,只有 1 个 | A |
双亲结点 | 当前结点的上一级结点 | B 是 E、F 的双亲结点 |
孩子结点 | 当前结点的下一级结点 | B、C、D 是 A 的孩子结点 |
兄弟结点 | 当前结点的同级结点 | B、C、D 互为兄弟结点 |
结点的度 | 一个结点的子树的个数 | A 的度为 3,B 的度为 2,C 的度为 0,D 的度为 1 |
叶子结点 | 又称 终端结点,指度为零的结点 | E、F、C、G 都是叶子结点 |
内部结点 | 非 (根结点 和 叶子结点) 的其他结点 | B、D 都是内部结点 |
结点的层次 | 根为第一层,根的孩子为第二层,以此类推 | A 在第一层,B、C、D 在第二层,E、F、G 在第三层 |
树的高度 | 一棵树的最大层次记为树的高度(或深度) | 如上图所示,树的高度为 3 |
1.2 二叉树 和 树 的区别
二叉树 | 树 | |
---|---|---|
是否需要区分左子树和右子树 | √ | × |
是否限制结点的度 | 最大为 2 | 不限制 |
二叉树图示:
2 二叉树
2.1 性质
描述 | 理解 | |
---|---|---|
性质1 | 二叉树第 i i i 层( i ≥ 1 i \geq1 i≥1)上至多有 2 i − 1 2^{i-1} 2i−1 个结点 | 1,2,4,8,以此类推 |
性质2 | 深度为 k k k 的二叉树至多有 2 k − 1 2^k -1 2k−1 个结点( k ≥ 1 k \geq1 k≥1)) | 根结点只有 1 个,其他至多 2 个 ,所以要减 1 |
性质3 | 对任何一颗二叉树,若其终端结点树为 n 0 n_0 n0,度为 2 的结点数为 n 2 n_2 n2,则 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1 | 终端结点(叶子结点)比 度为 2 的结点数多 1 个 |
性质4 | 具有 n 个结点的 完全二叉树 的深度 ⌊ l o g 2 n ⌋ \lfloor log_2n \rfloor ⌊log2n⌋ + 1 | 向下取整 |
完全二叉树:次序从左至右,结点不间断
2.2 存储结构
1)顺序存储结构:从上到下,从左到右
2)链式存储结构
2.3 遍历
2.3.1 先序遍历:DLR
- 顺序: 根结点 D → 左结点 L → 右结点 R
2.3.2 中序遍历:LDR
- 顺序: 左结点 → 根结点 → 右结点
2.3.3 后序遍历:LRD
- 顺序: 左结点 → 右结点 → 根结点
3 扩展
3.1 常考题
【例题1】如果一颗二叉树有 10 个度为 2 的结点,5 个度为 1 的结点,那么度为 0 的结点个数为()?
A.15
B.11
C.9
D.0
参考答案:B
根据二叉树的性质 n 0 = n 2 + 1 n_0 = n_2 + 1 n0=n2+1,即:度为 0 的结点数 = 度为 2 的结点数 + 1
【例题2】若一颗二叉树的先序遍历序列为 EFHIGJK,中序遍历序列为 HFIEJKG,则该二叉树的根结点的右孩子为()
A.E
B.F
C.G
D.H
参考答案:C
1、根据先序遍历序列为 EFHIGJK,可知 E 为树的 根结点
2、根据中序遍历序列为 HFIEJKG,可知 左子树结点为 HFI、右子树结点为 JKG
3、再看先序遍历 EFHIGJK,可知根结点的右孩子为 G