【问题标题】:convert non balanced binary search tree to red black tree将非平衡二叉搜索树转换为红黑树
【发布时间】:2018-06-30 04:14:13
【问题描述】:

是否可以在时间复杂度为 O(n)、空间复杂度为 O(h) 的情况下将非平衡 BST(树的大小为 n,高度为 h)转换为 RBT?

【问题讨论】:

    标签: binary-search-tree red-black-tree


    【解决方案1】:

    如果您事先知道节点的数量,这是可行的,知道节点的数量可以告诉您目标 RB 树的高度(不管原始树的高度是多少)。

    因此,您可以简单地从原始树中从最小值开始一个接一个地“剥离”节点,并将它们放置在正确的树槽中。执行此操作的最简单方法将结束每一行,除了可能为空的底行黑色。 (也就是说,如果你有一棵有 7 个节点的树,它们都将是黑色的,但如果你有一棵有 6 个节点的树,那么前 2 行将是黑色,而底行将有 3 个红色节点)。

    这将花费 O(n) 时间 - 访问原始树中的每个节点 - 和 O(h) 空间,因为您需要根据您在流程中的位置跟踪一些簿记。

    请注意,只有如果您知道原始树中的节点数,这将起作用,因为这取决于知道哪些节点将位于生成树的底行。

    【讨论】:

    • 我不知道节点的数量,我已经通过将BST转换为双向链表解决了它,从中制作了一个平衡的BST并使其成为RBT。我花了 O(n) 时间和 O(1) 空间。还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2016-06-05
    • 2018-09-17
    • 2012-05-13
    • 1970-01-01
    相关资源
    最近更新 更多