lintcode: 把排序数组转换为高度最小的二叉搜索树
题目:
把排序数组转换为高度最小的二叉搜索树
给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。
给出数组 [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: 把排序数组转换为高度最小的二叉搜索树相关推荐
- 高度平衡的二叉搜索树基础概念与经典题目(Leetcode题解-Python语言)
高度平衡的二叉搜索树(平衡二叉树),定义见此Leetbook.简单来说,就是基于相同节点值构建出来的二叉搜索树中高度最小的,即为平衡二叉树(不唯一).有 N 个节点的平衡二叉搜索树,它的高度是 log ...
- 【数据结构】AVL树(高度平衡的二叉搜索树)
AVL树(高度平衡的二叉搜索树) ①AVL树概念 ②平衡方法 <1>单旋 左单旋 右单旋 <2>双旋 先左后右旋 先右后左旋 ③代码实现 <1>所需头文件 < ...
- [leetcode-108,109] 将有序数组转换为二叉搜索树
109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...
- 二叉搜索树-创建最小高度树(递归)
题意: 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 这里回忆一下二叉搜索树的概念: 对于树中的所有子树都有,左子树上的值都小于根节点的值,右子树上的值 ...
- 程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)
1. 题目 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-1 ...
- 数据结构与算法--力扣109题将有序双向链表转换为二叉搜索树
将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总 ...
- 每天一道LeetCode-----将有序序列转成高度平衡二叉搜索树
Convert Sorted Array to Binary Search Tree 原题链接Convert Sorted Array to Binary Search Tree 给定一个地增序列,要 ...
- 数据结构与算法--力扣108题将有序数组转换为二叉搜索树
力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫, ...
- Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...
最新文章
- 如何设计并实现一个秒杀系统?(含完整代码)
- 从零开始搭建系统2.1——Nexus安装及配置
- 超图软件:以用户价值为源点做精准化的研发
- mysql数据库怎么安装建表_mysql数据库安装及建表注意事项
- Swoole源代码学习记录(十五)——Timer模块分析
- ITK:比较两个图像并将输出像素设置为最大
- Spring MVC请求处理流程分析
- thrift java 对象_Apache Thrift,Java:对象数据类型
- Python--day45--pymysql模块初识以及SQL注入
- securecrt登录linux下载文件,Linux使用SecureCRT上传和下载文件教程
- android 照片拼接长图_图文长截图(长图拼接制作)
- 酪氨酸激酶、自噬等抗肿瘤抑制剂
- Eclipse插件(RCP)自定义编辑器
- mysql左链sql去重_MySql去重
- 一球成谜!咪咕直播联合即构打造世界杯直播答题新玩法
- Video-based Emotion Recognition Using Multi-dichotomy RNN-DNN
- sicp3.5.2、3.5.3节部分习题尝试解答
- Linux Kernel Panic报错解决思路
- 简述计算机在医院药学工作中的应用,[生物医药论文精品a]计算机在药学工作中的应用...
- springcloud-netfilx(Eureka)服务注册
热门文章
- 了解linux服务器,教你快速了解一台Linux系统服务器的方法
- python导入模块教程_Python教程——导入自定义模块
- java源文件扩展名_java源文件名的后缀是什么?
- python实现50行代码_50行代码实现python计算器主要功能
- fft 估计载波频率程序_一种适用于MPSK解调的快速精确频率同步方法与流程
- 微型计算机普遍使用的编码是,微型计算机中普遍使用的字符编码是什么吗
- 两路虚拟化服务器,当四核多路服务器碰上虚拟化
- C#中split的用法
- catv系统主要有哪三部分组成_光纤放大器在DWDM传输系统中的应用
- mybatis in集合查询