我已经阅读了一些Q&关于自平衡二叉树,但我并不熟悉所有这些。
我知道的第一个是AVL,第二个是红黑树。
有些东西我不太明白:根据一些书籍和文章,AVL可以比红黑树快一点搜索,嗯,这是可以理解的。
那么什么是红黑树在AVL上的优势?
在AVL中,可能在每次插入后,我们必须检查平衡,但在红黑树中,我们不必频繁地做这样的事情,对吧?
PS: 我搜索SO类似的东西,但我没有得到令人满意的答案。 希望有些朋友可以给我一个自平衡树的详细比较。
答案 0 :(得分:2)
AVL树具有以下属性:从每个节点,左侧和右侧子树的高度差最多为2.
另一方面,在红黑树中,任何节点的左子树或右子树的高度最多两倍另一棵树的高度。也就是说,它们最多相差2倍。
这直观地表明,AVL树中的查找确实更快。
然而,当插入或删除节点时,我们必须更频繁地重新平衡AVL树,以保持更严格的高度不变(另一方面,在红黑树中重新平衡在算法上要复杂得多)。这意味着在实践中,红黑树可能比AVL树表现得更好,特别是在经常更改时。