408真题解析-2009-8-数据结构-B树-定义及性质

说明:本文参考了启航25版本、竟成25版本、王道25版本、考研官方推荐教材、互联网资料以及结合个人的理解整理。本人水平有限,若有不对之处,烦请指正。

一 真题2009-8

  1. 下列叙述中,不符合m 阶B树定义要求的是()。

    A. 根结点最多有m棵子树

    B.所有叶结点都在同一层上

    C.各结点内关键字均升序或降序排列

    D.叶结点之间通过指针链接

二 读题

本题根据m阶B树特征分析

三 哔哔详解

A\B\C 均为B 树基本特征; D 选项是B+树特征,故选D;

四 参考答案

参考答案 D;

五 考点精析

5.1 B 树的定义与性质

5.1.1 B树定义

B树(B-tree)是一种平衡的多路搜索树,主要用于磁盘等外存数据管理。一棵 m阶 B树(m≥3)满足以下条件:

节点结构:每个节点最多包含 m棵子树(即最多 m−1个关键字)。

根节点:根节点至少有 2 棵子树(除非根是叶子)。

非根内部节点:至少有 ⌈m/2⌉棵子树(即至少 ⌈m/2⌉−1个关键字)。

所有叶子节点:位于同一层,且不带信息(实际B树定义中,叶子节点通常为空或包含数据,不同教材有差异。常见定义:叶子节点不存储数据,只作为查找失败的终端;但在数据库实现中,B树节点常同时存储键值对)。

关键字顺序:节点内关键字递增排列,且子树指针满足:指针 Pi所指子树的所有关键字均大于 Ki且小于 Ki+1。

5.1.2 B 树性质

平衡性:所有叶子节点在同一层,保证绝对平衡。

高度 :对于包含 n个关键字的 m阶 B树,高度 h满足:
log⁡m(n+1)≤h≤log⁡⌈m/2⌉(n+12)+1 \log_{m}(n+1) \leq h \leq \log_{\lceil m/2 \rceil} \left( \frac{n+1}{2} \right) + 1 logm(n+1)≤h≤log⌈m/2⌉(2n+1)+1
搜索效率:一次搜索需访问的节点数不超过树高,通常 h很小(例如 3~4 层可管理大量数据)。

插入删除:通过分裂、合并节点维持平衡。

5.2 B+ 树定义与性质

5.2.1 B+树定义

B+树是 B树的变体,广泛应用于数据库索引。一棵 m阶 B+树满足:

节点子树数量:每个节点最多 m棵子树。

关键字与子树:非叶节点中,关键字个数等于子树个数减 1,关键字充当分隔值。

数据存储仅叶子节点存储数据(或数据指针),内部节点只存储索引(关键字)。

叶子链表:所有叶子节点通过指针链接成有序链表。

关键字范围:非叶节点的关键字是其对应子树中最大(或最小)关键字的副本,且所有关键字均出现在叶子层。

节点最小容量:根节点至少有两棵子树,其他非叶节点至少有 ⌈m/2⌉棵子树;叶子节点至少包含 ⌈m/2⌉个关键字。

5.2.2 B+树性质

数据全在叶子:查找必须走到叶子节点才能获得数据,查询路径长度稳定。

顺序访问高效:叶子链表支持高效的范围查询和全表遍历。

内部节点更"瘦":因不存数据,内部节点可容纳更多关键字,树更矮。

分裂方式 :插入时若节点满,分裂后中间关键字上浮到父节点,并在叶子层保留该关键字。

5.3 B树与B+树核心区别

对比维度 B树 B+树
数据存储位置 所有节点均可存储数据记录(键值对) 仅叶子节点存储数据记录,内部节点只存索引键
叶子节点结构 叶子节点是独立的,无链表连接 叶子节点通过指针顺序链接,形成有序链表
查询性能 可能在任何节点命中,平均较快,但不稳定 必须走到叶子节点,稳定,且适合范围查询
关键字重复 关键字不重复出现(每个节点关键字唯一) 内部节点的关键字重复出现在叶子节点中
存储利用率 节点存数据,故相同阶数下节点可容纳的关键字较少 内部节点仅存键,可存更多关键字,树更矮胖
适用场景 文件系统、少数数据库索引 主流数据库索引(如MySQL InnoDB)

六 考点追踪

暂无

相关推荐
hk11241 天前
【Architecture/Refactoring】2026年度企业级遗留系统重构与高并发架构基准索引 (Grandmaster Edition)
数据结构·微服务·系统架构·数据集·devops
im_AMBER1 天前
Leetcode 95 分割链表
数据结构·c++·笔记·学习·算法·leetcode·链表
无限进步_1 天前
【C语言】堆(Heap)的数据结构与实现:从构建到应用
c语言·数据结构·c++·后端·其他·算法·visual studio
再难也得平1 天前
两数之和和字母异位词分组
数据结构·算法
黎雁·泠崖1 天前
【线性表系列入门篇】从顺序表到链表:解锁数据结构的进化密码
c语言·数据结构·链表
橘颂TA1 天前
【剑斩OFFER】哈希表简介
数据结构·算法·散列表
小尧嵌入式1 天前
c++红黑树及B树B+树
开发语言·数据结构·c++·windows·b树·算法·排序算法
optimistic_chen1 天前
【Redis 系列】常用数据结构---ZSET类型
数据结构·数据库·redis·xshell·zset·redis命令
tobias.b1 天前
408真题解析-2009-10-数据结构-排序
数据结构·算法·排序算法·408考研·408真题·真题解析