如何在红黑树中插入和删除比AVL树更快?

时间:2014-09-01 13:25:59

标签: algorithm tree avl-tree red-black-tree

我想更好地理解差异,但是没有找到可以将其分解到我的水平的来源。

我知道两棵树每次插入最多需要2次旋转。那么如何在红黑树中插入更快?

如果插入需要在avl树中进行O(log n)旋转而O(1)是红黑的?

2 个答案:

答案 0 :(得分:4)

嗯,我不知道你的等级究竟是什么,但简单来说,红黑树比AVL树更不平衡。对于红黑树,从根到最远叶的路径不超过从根到最近叶的路径的两倍,而对于AVL树,两个相邻子树之间的差异从不超过一个。这使得AVL树中的插入和删除成本稍高,但查找速度更快。两个数据结构的渐近和最坏情况行为是相同的(在两种情况下,运行时(不是旋转数)是插入的O(log n),你提到的O(1)就是所谓的{{ 3}})。

有关两种数据结构的简短比较,请参阅amortized runtime

答案 1 :(得分:1)

红黑树的插入和删除速度不快。这是一个常见的假设,假设是基于这样一个事实:红黑树的平均每个插入点的旋转比AVL略小(.6 vs .7)。 你可以在Java中自己检查TreeMap(红黑)和TreeMapAVL的这个实现,你可以得到确切的数字,而不是常见但不正确的假设。 https://github.com/dmcmanam/bbst-showdown