求三叉树高度

有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向下取整就行了。

posted @ 2012-09-26 11:04  23lalala  阅读(1187)  评论(0编辑  收藏  举报