完全二叉树
层数 ~~~~~~~~~~ 该层结点数
1 ~~~~~~~~~~ 2^(1-1) = 2^0=1
2 ~~~~~~~~~~ 2^(2-1) = 2^1=2
3 ~~~~~~~~~~ 2^(3-1) = 2^2=4
~~~~~~~~~~ ……
K-1 ~~~~~~~ 2^(K-1-1) = 2^(K-2)
可以看出,前K-1层 层层的结点数构成了一个q=2的等比数列,求前K-1层的结点数之和,即求该等比数列之和:S = a1(1-q^n) / (1-q);
已知:a1 = 1,q = 2,n=K-1,
代入可得:S = 2^(K-1) - 1;
这样,也可以理解堆中父结点编号为i,子节点就为2i+1 and 2i+2。
(K-1行结点用K行结点数目的一半来对应K行结点,画个图很容易看出二者的对应编号关系)
由上面我们可以得到,总结点数n为2^K,那么如果已知总结点数n,可以得K(树高) = logn