红黑树重新平衡

时间:2015-05-28 09:01:05

标签: algorithm red-black-tree

我想在我的树-3,-2,-1,0,1,2和3中插入7个项目。当我按此顺序插入时,我得到一个高度为3的平衡树而不进行旋转:0, -2,2,-1,1,-3,3。但是当我按升序插入所有项目时,根节点的右边部分会重新平衡,但根节点的左边部分不会重新平衡。我见过的所有重新平衡算法都是从插入的节点重新平衡到根节点,然后停止。难道他们不能继续到根节点的对面吗?如果我按升序(例如0到100)插入大量项目,我感觉情况会变得更糟。最后树是平衡的,但不是高度优化的。

1 个答案:

答案 0 :(得分:1)

平衡的二元搜索树(R / B树,AVL树等)都不提供绝对平衡,即它们都不提供最小可能的高度。这是因为不可能做到这样一个完整的"快速重新平衡。如果我们希望始终尽可能保持高度最小化,那么树操作通常需要大量重新平衡,因此重新平衡在O(log N)中不起作用。因此,所有操作(插入,更新,删除等)也将在O(log N)时间内无效,这将破坏平衡树的整个想法。

什么平衡树保证对树高的要求不是那么严格:树高为O(log N),对于某个常数{{1}是C*log N }}。因此,树不能保证理想的平衡,但平衡总是不太理想。