Appearance
题目
在一株高度为 2 的 5 阶 B 树中,所含关键字的个数最少是()
错因
B
把"非根节点至少 key 数"的下限记错:误用了 ,于是算成"根 1 + 2 个子节点各 3 = 7"。
正确公式是 。少减了 1,导致每个叶子多算 1 个 key。
C
把"根节点至少 key 数"也按非根公式算:误以为根至少 个 key,于是 "根 2 + 2 个子节点各 3 = 8"。
但 B 树规定:根节点的下限不同于非根——只要根不是叶子,至少 1 个 key 即可(保证根至少有 2 个孩子)。本题求最少,根就该取 1。
D
通常是把"高度"按王道与教材另一种约定的差异搞错——把高度 2 当成"3 层结构"(根+中间层+叶子层)来算,得出根 1 + 中间 2×2 + 叶 6×2 ≈ 14 这种结果。
408 主流约定(也是本题应用的约定)是"叶子在高度 1 处,根在最大高度处"——高度 2 = 根 + 叶 共 2 层,没有中间层。
总解析
5 阶 B 树关键性质:
| 性质 | 取值 |
|---|---|
| 每节点最多 key 数 | |
| 每节点最多孩子数 | |
| 非根节点最少 key 数 | |
| 非根节点最少孩子数 | |
| 根节点最少 key 数(非叶根) | 1(保证至少有 2 个孩子) |
| 所有叶节点 | 在同一层 |
408 教材关于"高度"的约定:根所在层为最高层、叶所在层为高度 1。所以"高度 2"= 根(高度 2)+ 叶(高度 1),共 2 层结构。
最少关键字的构造:
要让 key 数最少,每个节点都取下限。
- 根节点:1 个 key → 2 个孩子
- 第二层(叶子):2 个节点,每个取下限 2 个 key
[k] ← 根:1 key
/ \
[a, b] [c, d] ← 2 个叶子:各 2 key总 key 数 = 。
公式速记: 阶 B 树高度为 时,关键字最少数 = ()。
套本题 :。
但比起背公式,画一棵每节点取下限的小 B 树更不容易出错——根 1 key、其余 2 key,叶子在同一层。
最终答案是 A(5)。