在 5 阶的 B-tree 中插入完整节点时哪个项目上升,为什么?

Which item goes up while inserting in a full node in a B-tree of order 5 and why?

我正在努力学习设计 btree。
以下是开发 5 阶 btree 的值。

1,12,8,2,25,6,14,28,17,7,52,16,48,68,3,26,29,53,55,45,67.

当我插入 25 时,它分成 child 个节点

         8
      /     \
    1 2    12 25

我可以知道 8 作为 parent 出现的依据是什么吗?为什么不是任何其他号码?如果 btree 的顺序是 4 怎么办?

在 5 阶的 B-tree 中,每个节点(根除外)必须有 2 到 4 个值。

在您输入 25 时,节点的值为 1、2、8、12。为了在每个新 child (1,2) 和 (12,25) 中至少有 2 个值,您必须在 8.

处拆分

在插入25之前,节点状态是这样的:

全节点:1, 2, 8, 12。节点中的项目始终按 B 树排序。

当您插入新项目 25 时,序列变为:1, 2, 8, 12, 25.

在这个序列中,中间项是向上提升的项。 节点拆分将数据项平均划分:一半转到新创建的节点, 一半留在旧的,中间的上升。这就是8向上的原因。

下图包含一个5阶B树,虽然插入的数据不同,但应该有助于更好地理解这种情况。右侧序列中,箭头表示向上提升的项目。