有12345个结点的满3叉数的高度为_____写出计算过程
1 层:1 节点数:1
/ | \
2 3 4 层:2 节点数:3
/ | \ / | \ / | \
5 6 7 8 9 10 11 12 13 层:3 节点数:9
满三叉树每层节点数目
假设k-1层有n个节点 那么第k层就应该有3n个节点。也就是说这是一个首项是1,公比是3的等比数列。第n层节点数an可以表示为
an=a1*q^(n-1) = 1*3(n-1) = 3^(n-1)
满三叉树总的节点数目
总的节点数目就是对各层节点数目求和,每层的节点数目计算公式已经有了。然后就是公比数列求和就行了。一个高位n的满三叉树总节点个数
sn = a1*(1-q^n)/(1-q) = 1*(1-3^n)/(1-3) = (3^n-1)/2
其实有了这个公式这题就可以做了,可以估计一下。求得一个n和n+1让12345在sn和sn'之间就行了。
下面给出一个较为严格的推导。
....
/.......\
(3^(k-1)-1)/2 层:k-1
/ \
(3^(k-1)+1)/2 (3^k-1)/2 层:k
设一个有n层的满三叉树的节点总数为n,那么
(3^(k-1)+1)/2 <= n <= (3^k-1)/2
3^(k-1)+1 <= 2n
3^k-1 >= 2n
k <= log3(2n - 1) - 1
k >= log3(2n + 1)
对k向下取整就行了。