美文网首页
由一个数组构建高度最小的树

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

作者: 正在努力ing | 来源:发表于2018-08-26 16:01 被阅读0次

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

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

树的深度 = 层数

树的高度 = 层数 + 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)

相关文章

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

    知识点:树的层数和高度和深度 首先要介绍树的层数:顶点的层数是从根到该顶点唯一通路的长度。 树的深度 = 层数 树...

  • LeetCode题解之最小高度树

    最小高度树 题目描述 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。...

  • OJ lintcode 把排序数组转换为高度最小的二叉搜索树

    给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。

  • 最小高度树

    题目: 题目的理解: 看到题目的时候还是觉得很奇怪的,觉得有很多很多可能性啊。当去搜索了二叉搜索树的定义后明白了思...

  • 绝对定位下的样式修改

    结构如下: 现在画线的不是固定高度,由内容支撑,有一个最小高度。点击出现输入框和树,绝对定位,不影响下面元素布局,...

  • 面试题-04.02-最小高度树

    给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: ...

  • LintCode 把排序数组转换为高度最小的二叉搜索树

    题目 给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 样例给出数组[1,2,3,4,5,6,7]...

  • Swift-创建二叉查找树

    题目:给定一个有序整数数组,元素各不相同且按照升序排列,编写一个算法,创建一个高度最小的二叉查找树.二叉查找树是指...

  • 排序数组转换为二叉查找树

    已知一个排序的数组,将该数组转换为一个高度平衡的二叉查找树。平衡的定义: 二叉查找树中,任意节点的两颗子树高度差不...

  • 面试题 04.02. 最小高度树

    题意:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 解法:1.分析...

网友评论

      本文标题:由一个数组构建高度最小的树

      本文链接:https://www.haomeiwen.com/subject/gduoiftx.html