在线性时间内将数组排序为2-4 +树

时间:2013-02-15 14:39:40

标签: arrays algorithm data-structures b-tree red-black-tree

我需要以下问题的帮助:

描述一种算法,该算法给出一个大小为n的排序数组,构建一个2-4 +包含的树 与数组相同的键。该算法应该在时间O(n)中运行。

我已经知道如何在线性时间内从排序数组中构建一个红黑树(因为插入后修复树的函数的分摊时间是O(1))。

然而,我不知道这个技巧如何帮助我2-4 +树: 插入这些树后,与摊销的固定时间有什么关系吗? (我不知道它是什么......)

或者我完全错了?

顺便说一句,我不能使用我们在O(n)中从红黑树构造2-4树的类中看到的技巧,它必须是2-4 +的简单数组树算法。

提前致谢

1 个答案:

答案 0 :(得分:1)

红/黑树与2-3-4棵B树之间有着密切的联系。事实上,这两者是彼此的等距,意味着任何2-3-4 B树都可以编码为红黑树,反之亦然。 This older question讨论了详细信息。

使用此连接,您应该能够在线性时间内修改用于构建ree-black树的算法,而不是在线性ime中构建2-3-4 B树。您可以构建红黑树然后迭代它以确定要构造的B树的结构,或者可以尝试更改算法以直接构建B树。

希望这有帮助!