将非平衡二进制搜索树转换为红黑树

时间:2018-01-21 11:19:57

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

是否有可能将非平衡BST(树的大小为n,高度为h)转换为时间复杂的O(n)和空间复杂度为O(h)的RBT?

1 个答案:

答案 0 :(得分:0)

如果您知道节前的节点数量是可行的,那么知道节点数就会告诉您目标RB树的高度(无论原始树高度是多少)。

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

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

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