Appearance
题目
下列叙述中,不符合 m 阶 B 树定义要求的是()。
错因
A
误以为"根节点也得满足 ≥ ⌈m/2⌉ 棵子树"那条下限,进而觉得"最多 m 棵子树"和这条下限矛盾。但 B 树定义里根是特殊的——只要不是单节点情况下根至少 2 棵子树就行,最多 m 棵是普适上限。把"根的下限"和"非根的下限"混着记的人最容易在 A 上踩坑。
B
误以为 B 树叶子层会因为插入分裂而不齐——比如想象"分裂时新节点冒出来挂在某个深处"。实际上 B 树分裂会整棵树高度增 1(根分裂时上提一层),所有叶子同步下移,所以叶子永远在同一层。把"叶子同层"当成 B 树异常性质的人,常常没真正模拟过分裂过程。
C
误以为节点内关键字"只是用来索引,不需要严格有序"。实际上节点内的二分查找正是靠升序保证的——key₁ < key₂ < ... < keyₙ 既是定义也是查找前提,不能松。看到"升序或降序"的"或"字而怀疑的人,是被表述方式带偏了;真实定义只允许升序(或者全题统一降序),任何节点内的关键字都必须有序。
总解析
题目问哪个选项不符合 m 阶 B 树的定义:
- A:根节点最多 m 棵子树 ✓(B 树定义:根节点有 2~m 棵子树;非根内部节点有 ⌈m/2⌉~m 棵子树)
- B:所有叶节点在同一层 ✓(B 树是严格平衡的多路搜索树,所有失败查找都在同一层结束)
- C:节点内关键字升序排列 ✓(每个节点里的 k 个关键字满足 K₁ < K₂ < … < Kₖ)
- D:叶节点之间通过指针链接 ✗(这是 B+ 树 的特点,B+ 树的叶节点形成有序链表便于范围查询;B 树的叶节点之间没有指针链接)
答案 D。