【20】高度最小的BST

【题目】

对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。

给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。

【代码】

import java.util.*;

public class MinimalBST {

     public int buildMinimalBST(int[] vals) {
         if(vals == null || vals.length <1)
            return 0;
         return buildMinimalBSTCore(vals, 0 , vals.length-1);
     }
    public int buildMinimalBSTCore(int[] vals, int start, int end) {

        if(end < start)
            return 0;
        int mid = (start + end)/2;
        int leftH = 1 + buildMinimalBSTCore(vals, start, mid-1);
        int rightH = 1 + buildMinimalBSTCore(vals, mid+1, end);

        return Math.max(leftH, rightH);
    }
}
时间: 2024-08-07 04:13:44

【20】高度最小的BST的相关文章

14.高度最小的BST

题目描述 对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树. 给定一个有序序列int[] vals,请返回创建的二叉查找树的高度. 返回高度的代码如下: import java.util.*; public class MinimalBST { public int buildMinimalBST(int[] vals) { return (int)(Math.log(vals.length)/Math.log(2))+1; } } 创建高度最小的二叉查找

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

原题网址:https://www.lintcode.com/problem/convert-sorted-array-to-binary-search-tree-with-minimal-height/description 描述 给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树. There may exist multiple valid solutions, return any of them. 您在真实的面试中是否遇到过这个题?  是 样例 给出数组 [1,2,3,4,5

解决ie6支持最大高度最小高度的方法

1.IE6支持max-height解决方法 IE6支持最大高度解决CSS代码:.yangshi{max-height:1000px;_height:expression((document.documentElement.clientHeight||document.body.clientHeight)>1000?"1000px":"");overflow:hidden;} 说明:max-height:1000px; 这个是IE6以上级其它品牌浏览器支持最大范

给定有序数组,创建高度最小的二叉查找树

TreeNode createMinimalBST(int arr[], int start, int end) { if (end < start) { return null; } int mid = start + (end - start) / 2; TreeNode n=new TreeNode(arr[mid]); n.left=createMinimalBST(arr,start,mid-1); n.right=createMinimalBST(arr,mid+1,end); re

程序员面试金典-面试题 04.02. 最小高度树

题目: 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例:给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3   9 /     / -10  5 分析: 因为数组中元素已经有序,我们可以将数组中最中间的元素作为根节点,然后递归构建二分搜索树,当前结点的左子树由中间元素左边的的元素构成,右子树则由右边元素,递归构建即可. 程序: /**

ie6兼容之绝对定位元素内容为空时高度问题

正常显示: ie6下显示: line6元素高度最小16px; 解决办法: 添加内容在空的div里,并且设置行高即可. 其中,非ie6浏览器不需要再空的div里加无谓的内容,再次需要用“条件注释”来解决: 条件注释使用方法 1 2 3 4 5 6 <!--[if IE 5]>仅IE5.5可见<![endif]--> <!--[if gt IE 5.5]>仅IE 5.5以上可见<![endif]--> <!--[if lt IE 5.5]>仅IE 5

脑洞题目 - 改自从一组无序数组中找不存在的最小正整数

无聊想的题目,但题目创意改自从一组无序数组中找不存在的最小正整数.并不难,但也有陷阱,比考虑0和负数... /** * 从无序数组中找不存在的最小正整数 * 我的要求:比如:{3,4,6,9,20}中 最小的不存在的正整数为2 */ #include <stdio.h> int main() { int arr[] = {-5, -10, 42, 29, 18, -3, 8, 20, -1}; int i, j, temp; for(i = 1; i < sizeof(arr)/size

瀑布流,并且解决定位和容器高度自适应问题,随意放哪都可以用。

css: #main{ width:956px; height: auto; margin: 10px auto 0px auto; border:2px solid #ccc; float:left; position:relative; } #main .pin{ width:220px; height:auto; padding:15px 0px 0px 15px; float:left; } #main .pin .box{ width:203px; height:auto; paddi

宽高自适应,高度塌陷,伪对象选择符

宽高自适应 网页布局中经常要定义元素的宽和高.但很多时候我们希望元素的大小能够根据窗口或子元素自动调整,这就是pc自适应. 自适应的优点: 元素自适应在网页布局中非常重要,它能够使网页显示更灵活,可以适应在不同设备.不同窗口和不同分辨率下显示. 宽度自适应 元素宽度设置为100%.(块元素宽度默认为100%) 或者不设置宽度(width);(宽度是父元素的宽度) 高度自适应 1)自适应元素高度:height:auto;或者不设置;(是子元素撑开父元素的高度) 2)元素高度自适应窗口高度 设置方法