我试图理解在给定范围内打印BST键的运行时间。 我试图从this example了解它,但我不能。
我想我明白了O(log n)
的来源。这是通过递归方式通过BST,每个方面需要O(log n)
,但我不确定:
K
的来源。它只是打印所需的恒定时间吗?如果是,为什么运行时不是O(log n)
+ O(k)
,而是忽略K
来自顺序遍历的O(n)
在哪里?因为它不在此运行时中。
如果我们在树的每一侧有多个值,那么运行时将如何变化。例如,如果范围是4?
答案 0 :(得分:2)
理解解决方案的一种更简单的方法是考虑以下算法:
给定的算法做同样的事情;搜索k1和k2之间的密钥需要O(lgn)时间,而打印仅针对k1和k2范围内的k个键(O(k))进行。如果所有BST键都在k1和k2之内,则运行时将为O(lgn)+ O(n)= O(n),因为需要打印所有n个键。