【发布时间】:2016-05-16 06:45:07
【问题描述】:
如果我有以 n 不同整数作为键的顺序统计二叉平衡树,并且我想编写函数 find(x) 来返回不在树中的最小整数,并且大于x。在O(log(n)) 时间。
例如,如果树中的键是6,7,8,10,11,13,14,那么find(6)=9、find(8)=9、find(10)=12、find(13)=15。
我想在O(log(n)) 中找到max 和x 的索引(标记i_x)在O(log(n)) 然后如果i_x=n-(m-x) 那么我可以简单地返回max+1。
我的意思是在6,7,8,10,11,13,14 中,索引 6 为 0,例如索引 10 为 3...
但我在其他情况下遇到了麻烦......
【问题讨论】:
-
像往常一样查找 x。然后从 x 执行深度优先样式搜索,使得每个整数都是前一个整数的增量。如果不是,那么你找到了你的整数。
-
@Striker 但是对于
1,2,3,4,5,6,7,9和find(1)来说,应该是O(n),不是吗? -
最坏的情况是 O (n)。
-
@Striker 和我需要
O(log(n))... 我们如何使用它是一个订单统计树这一事实? -
@Striker,你的想法是正确的,进一步利用 BST 属性可以在
O(h)时间,其中 h = 树的高度,在最坏的情况下无论如何都是O(n)。所以你的评论实际上是答案的线索。在下面找到一个调谐的。
标签: algorithm binary-search-tree