我读到二进制搜索树,如果它是一个完整的树(除叶子节点之外的所有节点都有两个子节点)有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是如何出现的??
答案 0 :(得分:1)
更短的答案:完整(或完美)二叉树中的级别x
为log2(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
是指高度还是等级数。