【问题标题】:Why the node split when inserting into 2-3-4 tree?为什么插入2-3-4树时节点分裂?
【发布时间】:2012-08-03 23:32:19
【问题描述】:

在下面描述的2-3-4 tree 中(来自Data Structures & Algorithm in Java, 2nd ed),为什么插入99 会导致83/92/104 的节点分裂,而看起来99 可能已经插入到右子节点(@ 987654327@child,紧跟在97之后的位置,没有做任何拆分?

【问题讨论】:

    标签: algorithm 2-3-4-tree


    【解决方案1】:

    将 99 插入 C 是可以的,因为它会保持所有不变量,但是如果插入总是在向下的过程中扩展 4 个节点,则算法通常更简单。然后总会有空间进行任何需要的提升和旋转。比较 C 本身已经是 4 节点的情况可能会有所帮助。

    【讨论】:

    • 啊,我明白了。那讲得通。如果C 已满(例如96/97/98)并且我们没有在向下的途中进行节点拆分,我们必须拆分C 以插入99。但是,在这种情况下拆分 C 会导致树变得不平衡,这违反了 2-3-4 树的隐含规则。
    【解决方案2】:

    保持树平衡,保证性能。插入是递归的,它会命中一个 4 节点(具有 3 个值和 4 个子节点的节点),这将导致拆分完成。

    【讨论】:

    • 对不起,我还是一头雾水。如果将99 简单地插入C 而不拆分其父级,那么树如何不平衡
    • 大部分节点会落在从父节点开始的分支中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2013-03-05
    • 2016-03-06
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多