什么是log n高度?

时间:2012-09-09 04:00:03

标签: algorithm tree binary-search-tree

我开始知道Random-BST / Red-Black树的高度和其他一些树O(log n)

我想知道,这是怎么回事。可以说我有一棵这样的树

Binary tree http://i49.tinypic.com/96mf6v.png

树的高度基本上是树的深度,在这种情况下将是4(离开父深度)。但人们怎么能说高度可以用O(log n)概念来表示?

我非常喜欢算法,这一点令我很困惑。我错过了什么意思?

2 个答案:

答案 0 :(得分:1)

在算法复杂度中,变量n通常是指集合中的项目总数或参与某些计算。在这种情况下,n是树中节点的总数。所以,在你发布的图片中n=31。如果树的高度为O(log n),则表示树的高度与n的对数成比例。由于这是二叉树,因此您将使用log base 2。

⌊log₂(31)⌋ = 4

因此,树的高度应该大约为4 - 这与您的示例中的情况完全相同。

答案 1 :(得分:1)

正如我在评论中解释的那样,二叉树可以有多种情况:

  • 在退化的情况下,二叉树只是一个链,其高度为O(n)。
  • 在最好的情况下(对于大多数搜索算法),完整的二叉树具有以下属性:对于任何节点,子树的高度都相同。在这种情况下,长度将是log(n)的底限(基数2,或基数k,对于k个分支)。您可以通过对树的大小(构造函数中的结构感应)的归纳来证明这一点
  • 一般的情况下,你将混合使用这些树,构造一个树,其中任何节点都有可能具有不同高度的子节点。