在二叉搜索树中,大多数操作的平均计算复杂度为O(NlogN)。以下是来自Algo书中的文本片段:二叉搜索树分析
内部路径长度的平均值是D(n)= O(n log n)。因此, 的任何节点的预期深度是O(log n)。例如,随机生成的500个节点的树具有预期深度为9.98的节点。
立即说这个结果意味着所讨论的所有操作的平均运行时间,即插入, 在二叉搜索树上查找min,find max,delete是O(log n),但是这个 并不完全正确。原因在于,由于 删除,所有二叉搜索树可能均等于 并不清楚。特别是,上述删除算法有利于 使得左侧子树比右侧更深,因为我们总是用 替换具有来自右侧子树的节点的删除节点。这种策略的确切效果仍然不得而知,但它似乎只是一个理论上的新颖性 。已经示出,如果我们交替插入 和缺失O(N 2)(即,n正方形的THETA)倍,则树 将具有THETA平方根N.
的预期深度的四分之一之后百万个随机插入/删除对,该树有点右 - 重看起来明显不平衡(平均深度= 12.51)。
我上面的文字片断的问题是:
- 什么是笔者的意思是“因为缺失的,目前尚不清楚,所有的二叉搜索树都同样可能”?
- 作者如何达到500节点树的预期深度9.98,因为日志500不是9.98?
- 在最后一段中,他是如何获得12.51的平均深度的?
谢谢!
我认为在以上的大小511深度是9而不是8. – venkysmarty
事实上,它是。修正了,谢谢 –