在 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树,虽然插入的数据不同,但应该有助于更好地理解这种情况。右侧序列中,箭头表示向上提升的项目。
我正在努力学习设计 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树,虽然插入的数据不同,但应该有助于更好地理解这种情况。右侧序列中,箭头表示向上提升的项目。