二叉搜索树操作的时间分析

时间:2011-09-26 17:26:06

标签: data-structures binary-tree binary-search-tree

我读到二进制搜索树,如果它是一个完整的树(除叶子节点之外的所有节点都有两个子节点)有n个节点,那么没有路径可以有超过1 + log n个节点。

这是我做的计算......你能告诉我哪里出错了吗?

the first level of bst has only one node(i.e. the root)-->2^0
the second level have 2 nodes(the children of root)---->2^1
the third level has 2^3=8 nodes
 .
 .
the (x+1)th level has 2^x nodes

so the total number of nodes =n = 2^0 +2^1 +2^2 +...+2^x = 2^(x+1)-1
so, x=log(n+1)-1

now as it is a 'complete' tree...the longest path(which has most no of nodes)=x
and so the nodes experienced in this path is x+1= log(n+1)

那么数字1 + log n是如何出现的??

1 个答案:

答案 0 :(得分:1)

更短的答案:完整(或完美)二叉树中的级别xlog2(n+1),其中n是节点数(或者n = 2^(x-1) )。 x级别的树的高度为x-1。从根到任何节点的最长路径包含x = log2(n+1)个节点(以及x-1个边缘)。

现在因为n+1是2的幂,我们有log2(n+1) = 1 + floor(log2(n))。换句话说,1 + log2(n)是一个正确的上限,但它永远不是一个整数。

我不清楚你计算中的x是指高度还是等级数。