求三叉树高度

博客探讨了如何求解满三叉树的高度,通过解析满三叉树的每一层节点数量,利用等比数列的性质得出第n层节点数an的公式,并推导出总节点数的公式。最后,通过不等式确定高度k的范围,从而精确求解高度。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值