zoukankan      html  css  js  c++  java
  • 求三叉树高度

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

  • 相关阅读:
    1.文件I/O
    sqlite-按日期分组,根据日期查询详细内容
    sqlite-在数据库中创建默认时间
    Git-git 忽略 IntelliJ .idea文件
    重启猫(modem)的方法
    从TP、FP、TN、FN到ROC曲线、miss rate、行人检测评估
    畅所欲言第1期
    使用属性表:VS2013上配置OpenCV
    关于OOM那些事儿
    深度学习之江湖~那些大神们
  • 原文地址:https://www.cnblogs.com/23lalala/p/2703595.html
Copyright © 2011-2022 走看看