我遇到了给出的解决方案http://discuss.joelonsoftware.com/default.asp?interview.11.780597.8 http://discuss.joelonsoftware.com/default.asp?interview.11.780597.8使用 Morris InOrder 遍历,我们可以找到中位数O(n)
time.
但是否可以使用相同的方法来实现O(logn)
时间?这里也有人问过同样的问题 -http://www.careercup.com/question?id=192816 http://www.careercup.com/question?id=192816
如果您还维护节点的左右后代数量的计数,则可以通过搜索中间位置来在 O(logN) 时间内完成。事实上,你可以在 O(logn) 时间内找到第 k 大元素。
当然,这是假设树是平衡的。维护计数不会改变插入/删除的复杂性。
如果树不平衡,则最坏情况复杂度为 Omega(n)。
See: 订单统计树 http://pine.cs.yale.edu/pinewiki/OrderStatisticsTree.
顺便说一句,BigO 和 Smallo 非常不同(你的标题说 Smallo)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)