| 项目 | 值 |
|---|---|
| 主题 | B树 |
| 核心概念 | B树(B-Tree)是一种多路平衡查找树,适用于磁盘等外部存储 |
| 时间复杂度 | $O(\log_m n)$、$O(m \log_m n)$、$O(m)$ |
| 难度 | ⭐⭐⭐⭐ |
| 重要性 | ⭐⭐⭐⭐ |
B树(B-Tree)是一种多路平衡查找树,适用于磁盘等外部存储。
┌──┬──┬──┬──┬──┬──┬──┐
│n │P0│K1│P1│K2│P2│K3│P3│
└──┴──┴──┴──┴──┴──┴──┘
对于 3 阶 B树(2-3 树):
高度 h 的 m 阶 B树至少有:
$$N_{min} = 2 \lceil m/2 \rceil^{h-1} - 1$$
所以:
$$h \leq \log_{\lceil m/2 \rceil} \frac{n+1}{2} + 1$$
高度 h 的 m 阶 B树最多有:
$$N_{max} = m^h - 1$$
所以:
$$h \geq \log_m (n+1)$$
3 阶 B树,插入关键字后结点满:[1, 3, 5]
分裂:
[1][5]用前驱或后继替换,再删除前驱/后继
依次插入:1, 2, 3, 4, 5, 6, 7
[1][1,2][2] 左右 [1],[3]
2
/ \
1 3
[2] 左右 [1],[3,4][2] 左右 [1],[3,4,5] → 分裂,4 上提
2 4
/ | \
1 3 5
(根结点 [2,4],子树 [1],[3],[5])
[2,4] 左右 [1],[3],[5,6][2,4] 左右 [1],[3],[5,6,7] → 分裂,6 上提;根 [2,4,6] 满,分裂,4 上提
4
/ \
2 6
/ \ / \
1 3 5 7
100 个关键字的 3 阶 B树,最大高度?
| 性质 | 值 |
|---|---|
| 最大关键字数 / 结点 | m-1 |
| 最小关键字数 / 非根结点 | $\lceil m/2 \rceil - 1$ |
| 最大子树数 / 结点 | m |
| 最小子树数 / 非根结点 | $\lceil m/2 \rceil$ |
| 查找时间 | $O(m \log_m n)$ |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。