Skip to content

2022年 408 数据结构 第 8 题

数据结构2022年选择题2分

题目

在下图所示的 5 阶 B 树 T 中,删除关键字 260 之后需要进行必要的调整,得到新的 B 树 T1。下列选项中,不可能是 T1 根结点中关键字序列的是( )。

2022 真题第 8 题:5 阶 B 树

结构(文字版):5 阶 B 树(每个非根非叶结点 keys 数 ∈ [2, 4],孩子数 ∈ [3, 5];根结点 keys 数 ∈ [1, 4])。

  • [60, 90, 260, 350](4 个 key,5 个孩子)
  • 5 个叶子从左到右
    • C1 = [30, 50]
    • C2 = [70, 80, 85]
    • C3 = [100, 110]
    • C4 = [280, 300]
    • C5 = [400, 500]

子树边界关系:60 < C2 < 90 < C3 < 260 < C4 < 350 < C5。

错因

A

A 的根 [60, 90, 280] 是合法情形之一:用后继 280 替换 260,C4 因失去 280 变成 [300](下溢,仅 1 个 key < 最少 2 个)。左兄 C3=[100,110] 与右兄 C5=[400,500] 都只有 2 个 key,不能借出,只能与右兄 C5 合并:把根中分隔符 350 拉下来,与 [300][400,500] 合并成新结点 [300,350,400,500](4 个 key 不溢出)。根少了一个 key 350,变为 [60, 90, 280]。所以 A 是可能的。选 A 当作"不可能",是没穷举完合并方向。

B

B 的根 [60, 90, 350] 也是合法情形之一。可以从两条路径达到:

  1. 前驱 110 替换 260,根暂变 [60, 90, 110, 350],C3 变 [100] 下溢;左兄 C2=[70,80,85] 共 3 个 key,与 C3=[100] 合并需 3+1+1(分隔符 90)=5 个 key 超 4 不可行。改用与右兄合并:拉下分隔符 110,把 C3=[100] 与 C4=[280,300] 合成 [100,110,280,300],根少 110 变 [60, 90, 350]
  2. 后继 280 替换 260,C4 变 [300] 下溢,与左兄 C3=[100,110] 合并:拉下分隔符 280,新结点 [100,110,280,300],根少 280 变 [60, 90, 350]

所以 B 可能。选 B 的人可能只考虑了一种调整路径。

C

C 的根 [60, 85, 110, 350] 是合法情形之一:用前驱 110 替换 260,C3 变 [100] 下溢;从左兄 C2=[70, 80, 85](有 3 个 key 可借)借调——把根中分隔符 90 下降到 C3 左端,C2 的最大 key 85 升上去当新分隔符。结果 C2=[70, 80]、C3=[90, 100],根=[60, 85, 110, 350]。所以 C 可能

总解析

思路:删除内部 key 260,标准做法是用 C3 的最大 key(前驱 110)或 C4 的最小 key(后继 280)替换;替换后底层叶子可能下溢(key 数 < 最少 2),需借/合并修复。穷举所有合法调整路径,能产生的根序列就是"可能"的,剩下的就是答案。

两种替换 × 多种修复路径

路径操作调整后根
① 前驱 110 替换 + 从 C2 借 85借调(C2 富余)[60, **85**, 110, 350]C
② 前驱 110 替换 + 与右兄 C4 合并合并(左不能借/合)[60, 90, 350]B
③ 后继 280 替换 + 与左兄 C3 合并合并(左右兄都不能借)[60, 90, 350]B(同上)
④ 后继 280 替换 + 与右兄 C5 合并合并[60, 90, 280]A

注:路径 ① 中也可考虑"前驱 110 替换 + 与左兄 C2 合并",但 C2(3 keys) + C3(1 key) + 分隔符 90 = 5 个 key,超过 5 阶 B 树的上限 4,不可行,不会产生新根。

为什么 D [60, 90, 110, 350] 不可能?

[60, 90, 110, 350] 正好是用前驱 110 简单替换 260 后、还没修复 C3 下溢的中间状态。C3 此时只剩 [100](1 个 key),违反 5 阶 B 树非根结点 keys ≥ 2 的规则——题目要求"必要的调整后"得到合法的 T1,所以这个中间形态绝不能作为 T1 的根。

最终答案是 D

最后更新:

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

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