题目:

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

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

样例

给出数组 [1,2,3,4,5,6,7], 返回

     4/   \2     6/ \    / \
1   3  5   7

挑战

可能有多个答案,返回任意一个即可

解题:

可以看出,这里的数组是所求二叉树,中序遍历的结果,把这个结果还原成树即可。曾经天勤数据结果好像有这一题。

Java程序:

/*** Definition of TreeNode:* public class TreeNode {*     public int val;*     public TreeNode left, right;*     public TreeNode(int val) {*         this.val = val;*         this.left = this.right = null;*     }* }*/
public class Solution {/*** @param nums: an integer array* @return: a tree node*/public TreeNode sortedArrayToBST(int[] nums) {  // write your code hereif(nums==null)return null;return buildTree(nums,0,nums.length - 1);}public TreeNode buildTree(int[] nums,int start,int end){if(start>end)return null;int median = (start+end)/2;TreeNode node = new TreeNode(nums[median]);node.left = buildTree(nums,start,median-1);node.right = buildTree(nums,median+1,end);return node;}
}

View Code

总耗时: 2855 ms

Python程序:

"""
Definition of TreeNode:
class TreeNode:def __init__(self, val):self.val = valself.left, self.right = None, None
"""
class Solution:"""@param nums: a list of integer@return: a tree node"""def sortedArrayToBST(self, nums):# write your code hereif nums==None:return Nonereturn self.buildTree(nums,0,len(nums)-1)def buildTree(self,nums,start,end):if start>end:return Nonemedian = (start+end)//2node = TreeNode(nums[median])node.left = self.buildTree(nums,start,median-1)node.right = self.buildTree(nums,median+1,end)return node

View Code

总耗时: 869 ms

lintcode: 把排序数组转换为高度最小的二叉搜索树相关推荐

  1. 高度平衡的二叉搜索树基础概念与经典题目(Leetcode题解-Python语言)

    高度平衡的二叉搜索树(平衡二叉树),定义见此Leetbook.简单来说,就是基于相同节点值构建出来的二叉搜索树中高度最小的,即为平衡二叉树(不唯一).有 N 个节点的平衡二叉搜索树,它的高度是 log ...

  2. 【数据结构】AVL树(高度平衡的二叉搜索树)

    AVL树(高度平衡的二叉搜索树) ①AVL树概念 ②平衡方法 <1>单旋 左单旋 右单旋 <2>双旋 先左后右旋 先右后左旋 ③代码实现 <1>所需头文件 < ...

  3. [leetcode-108,109] 将有序数组转换为二叉搜索树

    109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...

  4. 二叉搜索树-创建最小高度树(递归)

    题意: 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 这里回忆一下二叉搜索树的概念: 对于树中的所有子树都有,左子树上的值都小于根节点的值,右子树上的值 ...

  5. 程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)

    1. 题目 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-1 ...

  6. 数据结构与算法--力扣109题将有序双向链表转换为二叉搜索树

    将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总 ...

  7. 每天一道LeetCode-----将有序序列转成高度平衡二叉搜索树

    Convert Sorted Array to Binary Search Tree 原题链接Convert Sorted Array to Binary Search Tree 给定一个地增序列,要 ...

  8. 数据结构与算法--力扣108题将有序数组转换为二叉搜索树

    力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫, ...

  9. Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

    669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...

最新文章

  1. 如何设计并实现一个秒杀系统?(含完整代码)
  2. 从零开始搭建系统2.1——Nexus安装及配置
  3. 超图软件:以用户价值为源点做精准化的研发
  4. mysql数据库怎么安装建表_mysql数据库安装及建表注意事项
  5. Swoole源代码学习记录(十五)——Timer模块分析
  6. ITK:比较两个图像并将输出像素设置为最大
  7. Spring MVC请求处理流程分析
  8. thrift java 对象_Apache Thrift,Java:对象数据类型
  9. Python--day45--pymysql模块初识以及SQL注入
  10. securecrt登录linux下载文件,Linux使用SecureCRT上传和下载文件教程
  11. android 照片拼接长图_图文长截图(长图拼接制作)
  12. 酪氨酸激酶、自噬等抗肿瘤抑制剂
  13. Eclipse插件(RCP)自定义编辑器
  14. mysql左链sql去重_MySql去重
  15. 一球成谜!咪咕直播联合即构打造世界杯直播答题新玩法
  16. Video-based Emotion Recognition Using Multi-dichotomy RNN-DNN
  17. sicp3.5.2、3.5.3节部分习题尝试解答
  18. Linux Kernel Panic报错解决思路
  19. 简述计算机在医院药学工作中的应用,[生物医药论文精品a]计算机在药学工作中的应用...
  20. springcloud-netfilx(Eureka)服务注册

热门文章

  1. 了解linux服务器,教你快速了解一台Linux系统服务器的方法
  2. python导入模块教程_Python教程——导入自定义模块
  3. java源文件扩展名_java源文件名的后缀是什么?
  4. python实现50行代码_50行代码实现python计算器主要功能
  5. fft 估计载波频率程序_一种适用于MPSK解调的快速精确频率同步方法与流程
  6. 微型计算机普遍使用的编码是,微型计算机中普遍使用的字符编码是什么吗
  7. 两路虚拟化服务器,当四核多路服务器碰上虚拟化
  8. C#中split的用法
  9. catv系统主要有哪三部分组成_光纤放大器在DWDM传输系统中的应用
  10. mybatis in集合查询