偶数顺序 B 树中的 'middle' 是哪个元素?

Which element is the 'middle' in a B-Tree of even order?

如果我有一个 阶 4 的 B 树,其中包含以下数据...

我需要在树中添加 2;我...

  1. 将 2 添加到节点(使其无效,因为它现在有 4 个键),然后拆分节点,将值 2 作为中间值并向上传播

  1. 难道我不把2加起来,取3作为中间值,向上传播3,然后把2加到正确的节点上吗?

请原谅糟糕的图表。

您执行第一个选项。对于任何顺序的 B 树,您总是添加节点,然后执行向上传播的拆分。对于数据结构上各种基本(插入、删除、搜索)操作的精彩交互式演示,我访问了一个有用的算法可视化页面 here。找到B-tree页面,你会发现它执行的是选项1。

如何找到向上推哪个元素:

1)将元素压入Btree合适的位置,检查是否溢出

如果那么请按照下面给出的步骤 2 和 3 进行操作。

2) 找到 CEILING((order of Btree+1)/2).

3) 向上移动该索引元素,给出指向左右子树的两个指针。

注意:先插入元素,如果发生溢出,则按照步骤2和3进行操作。

这里这个例子先插入2.

树的部分叶子变成|1| 2| 3| 5|.

溢出是因为任何节点只能有3个key

求上限((4+1)/2)=上限(5/2)=3(索引号)

第三个索引值3是中间元素。所以传播它。 3的左指针指向1|2,右指针指向5.