【问题标题】:In B-trees which element gets promoted when the node splits在 B 树中,当节点分裂时,哪个元素得到提升
【发布时间】:2011-02-04 05:31:24
【问题描述】:

假设有一个 8 阶的 B-tree。这意味着它可以有 8 个指针和 7 个元素。假设字母 A 到 G 存储在这个 B 树中。所以这个 B-tree 只是一个包含 7 个元素的节点。

然后你尝试将 J 插入到树中。没有空间,所以你必须拆分节点并创建一个新的根节点。哪个元素被提升到根节点?

【问题讨论】:

    标签: b-tree


    【解决方案1】:

    当您想在全节点中插入新元素时(使用2*t - 1 键)

    • 您通过选择节点的中间键(即中间键)来拆分它
    • 你生成了两个新的孩子,每个都有t-1 键(根据前一个键拆分它)
    • 中间值保留在父节点中
    • 然后您继续使用正常的插入算法,寻找应该放置新元素的位置。

    【讨论】:

    • 那么根据你的算法,d会在根节点吗?这本书显示 e 位于根节点中。
    • 基本上,您的案例中有 8 个元素(A B C D E F G J),因此有两个“中间”元素。他们中的任何一个(D或E)都可以。杰克的回答是关于在插入之前预先分割节点的情况,这也是可能的,尽管不是必需的(可以在节点实际插入之前很久就分割节点)。所以这本书和杰克都没有错。
    猜你喜欢
    • 2016-08-18
    • 2013-01-12
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多