Data structures 为什么avl树的搜索速度比红黑树快?

Data structures 为什么avl树的搜索速度比红黑树快?,data-structures,atl,avl-tree,red-black-tree,Data Structures,Atl,Avl Tree,Red Black Tree,我在几个地方读到过,avl树搜索速度更快,但无法理解。据我了解: 红黑树的最大高度=2*log(N+1) AVL树的高度=1.44*logo(N+1) 是因为AVL较短吗?是的 查找项目所需的步骤数取决于项目与根之间的距离 由于AVL树的包装较紧(即,它的最大高度较低),这意味着与红黑盒相比,更多的项目更靠近根 额外的紧密封装也意味着AVL树在插入元素时需要更多的工作。 任何应用程序的最佳选择取决于它是插入密集型还是搜索密集型…如果输入键几乎是升序/降序,AVL树比红黑树更好,因为我们必须进行单

我在几个地方读到过,avl树搜索速度更快,但无法理解。据我了解: 红黑树的最大高度=2*log(N+1) AVL树的高度=1.44*logo(N+1)

是因为AVL较短吗?

是的

查找项目所需的步骤数取决于项目与根之间的距离

由于AVL树的包装较紧(即,它的最大高度较低),这意味着与红黑盒相比,更多的项目更靠近根

额外的紧密封装也意味着AVL树在插入元素时需要更多的工作。
任何应用程序的最佳选择取决于它是插入密集型还是搜索密集型…

如果输入键几乎是升序/降序,AVL树比红黑树更好,因为我们必须进行单次旋转(左-左或右-右)来添加此元素。此外,由于树将是紧密平衡的,因此搜索速度也会更快

但对于随机选择的输入键,RBTree更好,因为与AVL相比,它们需要更少的插入旋转


总的来说,这取决于输入顺序,它将决定树的倾斜程度以及执行的操作。对于插入密集型使用红黑树和搜索密集型使用AVL。

AVL树和RBTree有各自的优点和缺点。如果你已经了解了它们是如何工作的,你会感觉更好

在insert操作中,AVL比RBTree稍微快一点,因为插入操作最多涉及一个旋转,而RBTree可能涉及两个旋转

RBTree在删除时最多只需要三次旋转,但在AVL中不能保证这一点。因此,它可以比AVL更快地删除节点

然而,最重要的是,它们都有严格的对数树高

选择任何子树,使AVL“平衡”的属性保证两个子子树之间的高度差最多为一,也就是说,直观地说,整个树是严格平衡的

但对于RBTree,规则可能会变得“松散”,因为RBTree的属性只能保证树的深度不超过节点总数对数的两倍

以下是一些更准确的事实:

AVL树的高度严格小于:1.44log(n+2)-0.328 (大约)

红黑树的高度最多为2log(n+1)


有关详细信息,请参阅。

阅读一本关于数据结构的书。但是如果我没记错的话,AVL树比RB树更接近完美平衡,而插入AVL的代价比插入RB的代价要昂贵得多。是的,因为AVL树较短,因此从上到下的节点较少。也许一张照片会有帮助:一个很好的解释。我只能添加一些数字:在AVL树中,节点深度之间的最大差值为1,在R-B树中,一个节点可以比另一个节点深两倍(深度是节点和根之间的距离)。但R-B树中的插入和删除最多需要3次旋转,而AVL树可能需要与树深度相等的旋转次数。(旋转是平衡树中的一个基本操作,我在这里不作描述)