由一个数组构建高度最小的树

知识点:树的层数和高度和深度

首先要介绍树的层数:顶点的层数是从根到该顶点唯一通路的长度。

树的深度 = 层数

树的高度 = 层数 + 1

就拿这棵树来说

           10
          /  \
         6     14
        /     / \
       4    12   16

这棵树的高度是3,但深度是2。
顶点的高度与深度跟树的高度与深度是不同的,对于顶点的高度是从下往上计数的,可深度是从上往下计数的,就像是一栋大楼,我们说这栋大楼的高度是从下往上看的,而对于深度,可以看做树顶端的根顶点向下延伸的深度。这样就容易区分高度与深度了。比如拿值为14的顶点,它的高度是2,深度是1。

知识点:Python log() 函数

import math
math.log(x[, base])

x -- 数值表达式。
base -- 可选,底数,默认为 e
math.log(10,2) :  3.32192809489  
计算出来的结果是有小数的

思路:

平衡二叉树必定是最小高度的树;每一次的点数符合等比数列

import math


class MinimalBST:
    def buildMinimalBST(self, vals):
        # write code hereclass MinimalBST:
        n = len(vals)
        res = math.log(n+1,2)
        if res%1:
            return int(res)+1
        return int(res)

if __name__ == '__main__':
    va = [1,2,3,4,5,6,7]
    s = MinimalBST()
    res = s.buildMinimalBST(va)
    print(res)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 6,938评论 0 3
  • java 各版本下载官方网站http://www.oracle.com/technetwork/java/arch...
    探戏者阅读 1,247评论 0 0
  • 有些人一转身便消失在茫茫人海,再也找不到一点踪迹。有些人正在慢慢调整人生列车前进的方向,慢慢地驶离我们的世界。有些...
    钟恒北北阅读 3,184评论 0 4
  • 场景: 1.父视图添加了左划手势,触发返回方法 2.子视图添加了UIButton 出现的结果bug: 每次点击确认...
    捕梦少女的梦想阅读 5,234评论 0 0

友情链接更多精彩内容