哪个元素是偶数顺序B树中的“中间”?

时间:2015-04-11 16:30:05

标签: b-tree

如果我的B树订单4 ,其中包含以下数据......

btree

我需要在树上加2;我...

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

    1. 我不添加2,取3作为中间值,传播3,然后将2添加到正确的节点?
    2. 请原谅可怜的图表。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

如何找到向上推的元素:

1)将元素推入Btree的正确位置,检查是否发生溢出。

然后按照下面的步骤2和3进行操作。

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

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

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

此例子中首先插入2。

树的部分叶子变为| 1 | 2 | 3 | 5 |。

发生

溢出,因为任何节点中只能有3个密钥。

查找上限((4 + 1)/ 2)=上限(5/2)= 3(索引编号)

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