B-树原理详解与Java模拟实现
一、B-树定义与特性
定义
B-树(B-Tree)是一种平衡的多路查找树(M路,M≥2)。它可以是空树,每个节点可拥有多个子节点,从而有效降低树高,提升查找效率。
特性
- 根节点至少有两个子节点。
- 每个非根节点至少有
⌈M/2⌉ - 1个关键字,至多有M - 1个关键字,且关键字按升序排列。 - 每个非根节点至少有
⌈M/2⌉个子节点,至多有M个子节点。 - 关键字
key[i]和key[i+1]之间的子树中,所有节点的值均介于两者之间。 - B-树通过节点的分裂与合并保持平衡,所有叶子节点均位于同一层。
二、B-树插入操作分析
以 M=3 为例,每个节点最多存储 2 个关键字,将区间分为 3 部分,最多有 3 个子节点。为便于实现,通常允许节点暂时插入第 3 个关键字后再触发分裂(即节点最多容纳 3 个关键字、4 个子节点)。

以下以插入序列 [53, 139, 75, 49, 145, 36, 101] 为例演示构建过程:
- 插入 53

- 插入 139

- 插入 75

- 节点满,触发分裂

- 插入 49 和 145








