Skip to content

2013年 408 数据结构 第 10 题

数据结构2013年选择题2分

题目

在一株高度为 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)

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数