我已经在几个地方阅读了它,可以更快地搜索树,但无法理解。我认为 : 红黑树的最大高度= 2 * log(N + 1) AVL树的高度= 1.44 * logo(N + 1)
是因为AVL更短吗?
答案 0 :(得分:15)
是
查找项目所需的步骤数取决于项目与根目录之间的距离。
由于AVL树被打包得更紧(即它的最大高度更低),这意味着更多的物品更接近根,而不是红黑的情况。
额外的紧密包装也意味着AVL树在插入元素时需要更多的工作。 任何应用程序的最佳选择取决于它是插入密集型还是搜索密集型......
答案 1 :(得分:5)
如果输入键几乎是上升/下降,则AVL树优于红黑树,因为那时我们必须进行单次旋转(左 - 左或右 - 右)以添加此元素。此外,由于树将紧密平衡,搜索也会更快。
但是对于随机选择的输入键,RBTree更好,因为与AVL相比,它们需要更少的旋转插入。
总的来说,它取决于输入序列,它将决定树的倾斜程度以及执行的操作。对于插入密集型使用红黑树和搜索密集型使用AVL。
答案 2 :(得分:1)
AVL树和RBTree确实各有优点和缺点。如果你已经了解它们是如何工作的,你会感觉更好。
AVL在插入操作中比RBTree略快,因为插入时最多只有一次旋转,而RBTree可能有两次旋转。
RBTree在删除时最多只需要三次旋转,但在AVL中无法保证这一点。因此它可以比AVL更快地删除节点。
然而,最重要的是,它们都具有严格的对数树高度。
选择任何子树,使AVL“平衡”的属性保证两个子子树之间的高度差最多为1,也就是说,直观地说,整棵树都是严格平衡的。
但是当谈到RBTree时,规则变得“松散”,因为RBTree的属性只能保证树的深度不大于节点总数的对数的两倍。
以下是一些可能更精确的事实:
AVL树的高度严格小于:1.44log(n + 2)-0.328 (约)
红黑树的高度最多为2log(n + 1)
有关详细信息,请参阅https://en.wikipedia.org/wiki/AVL_tree#Comparison_to_other_structures。