【问题标题】:Which element is the 'middle' in a B-Tree of even order?哪个元素是偶数 B-Tree 中的“中间”?
【发布时间】:2015-06-17 06:47:02
【问题描述】:

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

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

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

  1. 我是不是不加2,取3作为中间值,向上传播3,再把2加到正确的节点上?

请原谅这张糟糕的图表。

【问题讨论】:

    标签: b-tree


    【解决方案1】:

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

    【讨论】:

    • 非常感谢,看来我正在查看的讲座幻灯片当时做错了。他们显示 3 被传播到顶部。
    • @CSSStudent 我认为他们可能已经完成了选项 1,但只是传播了 3 而不是 2。我没有证据证明这一点,但我相信您可以选择其中任何一个,因为它们都是“中”值;它只是使生成的树看起来略有不同。
    【解决方案2】:

    如何找到向上推的元素:

    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的左指针指向1|2,右指向5。

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2011-03-31
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多