我知道红黑树只是一个平衡的二叉搜索树。所以我计算了数据集的平均搜索成本(基本上是比较的数量),元素的数量是2 ^ n。数据的设计使其形成一个完美的二叉搜索树。然而,在计算平均成本后,我意识到红黑树的计算平均搜索成本略高于完美平衡二叉搜索树的平均搜索成本。这是我的表:
# of elements Binary S. Tree Red-Black Tree
1 | 1 | 1
3 | 1.66667 | 1.6667
7 | 2.42857 | 2.71429
15 | 3.26667 | 3.4
31 | 4.16129 | 4.48387
63 | 5.09524 | 5.50794
127 | 6.05512 | 6.44882
255 | 7.03137 | 7.31373
511 | 8.01761 | 8.40509
1023 | 9.00978 | 9.45357
2047 | 10.0054 | 10.4919
4095 | 11.0029 | 11.5314
我有两个问题:你如何证明这一点,并且红黑树的计算平均成本是否有下限?
答案 0 :(得分:0)
RB树的已接受搜索复杂度是摊销O(log n),即上限和下限。一个完美平衡的树将具有搜索复杂度,实际上是O(log n),而不仅仅是摊销。
将红黑树指定为任何更严格的边界的难度在于它很大程度上取决于实现和插入的数据(并且可能被删除)。例如,如果您通过逐个插入已排序的数组中的项目来构建一个红黑树,以便最终得到一个最大不平衡的红黑树。但是也可以从该阵列创建一个红黑树并使其达到最佳平衡(通过使用红黑算法以外的其他东西创建初始树,并且仅切换到RB算法以进一步插入/移除)。