时间复杂度,二进制(搜索)树

时间:2012-10-23 23:40:40

标签: performance time-complexity asymptotic-complexity

假设我有一个完整的二叉树到达某个深度 d 。什么时间复杂度将遍历(预先遍历)这棵树。

我很困惑,因为我知道树中的节点数量是2 ^ d,因此时间复杂度为BigO(2^d)?因为树正呈指数增长。

但是,在互联网上进行研究后,每个人都表示遍历为BigO(n),其中n是元素的数量(在这种情况下为2^d),而不是BigO(2^d),我错过了吗?

谢谢

2 个答案:

答案 0 :(得分:2)

n定义为节点数。

2 ^ d只是当该深度的每个可能节点都满时的节点数

     o
   /   \
  o     o
 / \   
o   o

当2 ^ d为8时,只有5个节点

完整的二叉树每个节点都填充,除了最后一行,所有节点都填充到左边。你可以在维基百科上找到这个定义

http://en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees

答案 1 :(得分:0)

即使您可以将时间复杂度表示为O(2 ^ d),这也是无用的,因为它不能用于将其与任何其他集合的时间复杂度进行比较。

另一方面,将时间复杂度表示为O(n)非常有用。它会告诉您当您增加项目数时集合的反应,而无需确切知道集合的实现方式,您可以将其与其他集合的时间复杂度进行比较。