Here是一棵看似不平衡的红黑树。如果是这种情况,有人请解释为什么它不平衡?。
答案 0 :(得分:0)
是的,它是平衡的。规则说,计算黑色NIL叶子,最长可能的路径应该包括最多2 * B-1个节点,其中B是从根到任何叶子的最短可能路径中的黑色节点。在您的示例中,最短路径有2个黑色节点,因此B = 2,因此最长路径最多可以有3个黑色节点,但它只有2个。
答案 1 :(得分:0)
术语"平衡"因为不同种类的平衡树有不同的约束条件,所以有点模棱两可。
红黑树确保每个叶子的路径具有相同数量的黑色节点,并且至少与红色节点一样多的黑色节点。结果是最长路径最多只是最短路径的两倍,这足以保证搜索,插入和删除操作的O(log N)时间。
大多数其他类型的平衡树具有更严格的平衡约束。例如,AVL树确保每个节点两侧最长路径的长度相差最多1.这比你需要的多,而且有成本 - 在AVL树中插入或删除(找到后)目标节点平均采用O(log N)操作,而在红黑树中插入或删除操作平均需要O(1)次操作。
如果你想保持树完全平衡,那么你在每个节点的两边都有相同数量的后代,+ / - 1,这将是非常昂贵的 - 插入和删除操作需要O(N)时间。