题目描述

给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST).

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

对于此问题,将高度平衡的二叉树定义为一个二叉树,其中每个节点的两个子树的深度相差不超过1。

例:

Given the sorted array: [-10,-3,0,5,9],One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:0/ \-3   9/   /-10  5

主要思想

把一个有序数组转化为一棵二叉搜索树,二叉搜索树(BST)具有以下性质:

  • 若其左子树存在,则其左子树中每个节点的值都不大于该节点值;
  • 若其右子树存在,则其右子树中每个节点的值都不小于该节点值。

示例:

因此,可以用递归来构建一棵二叉搜索树,每次把数组分为两半,把数组中间的值作为其父节点,然后把数组的左右两部分进行递归,继续构造其左右子树。

实现代码

/*** Definition for binary tree* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
public class Solution {public TreeNode sortedArrayToBST(int[] num) {if ((num == null) || (num.length == 0)) {return null;}return helper(num, 0, num.length - 1);}private TreeNode helper(int[] num, int left, int right) {if (left > right) {return null;}int mid = (left + right + 1) >> 1;TreeNode node = new TreeNode(num[mid]);node.left = helper(num, left, mid - 1);node.right = helper(num, mid + 1, right);return node;}
}

注意:在牛客网上的环境下,mid = (left + right + 1) / 2,如果没有 +1,不能通过所有的测试样例;

LeetCode_Convert Sorted Array to Binary Search Tree(Java实现)相关推荐

  1. LeetCode: Convert Sorted Array to Binary Search Tree 解题报告

    Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...

  2. Convert Sorted Array to Binary Search Tree - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Convert Sorted Array to Binary Search Tree - LeetCode 注意点 不要访问空结点 题目要求的是平衡二叉搜 ...

  3. 【数组递归构造二叉树】LeetCode 108. Convert Sorted Array to Binary Search Tree

    LeetCode 108. Convert Sorted Array to Binary Search Tree Solution1:我的答案 构造二叉树利用递归 /*** Definition fo ...

  4. LeetCode: 108. Convert Sorted Array to Binary Search Tree

    题目 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. ...

  5. Convert Sorted Array to Binary Search Tree With Minimal Height

    Given a sorted (increasing order) array, Convert it to create a binary tree with minimal height. Exa ...

  6. leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)

    题目 https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题解 经典二分,不解释了,直接看代码 /*** ...

  7. [LeetCode] Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. Hi ...

  8. 【leetcode刷题笔记】Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 题解 ...

  9. [LeetCode]Convert Sorted Array to Binary Search Tree

    题目描述:(链接) Given an array where elements are sorted in ascending order, convert it to a height balanc ...

最新文章

  1. 用SRS和FFMPEG进行直播流转码
  2. js word 预览_微软补丁日:Word/DHCP/LNK远程代码执行漏洞预警
  3. 用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API
  4. 坚实原则:接口隔离原则
  5. ubuntu下如何查找某个文件的路径
  6. e.html5.qq.com,QQ群官网-开放能力
  7. “not a single-group group function”
  8. 【Spring】模块
  9. [转]调整 VirtualBox 虚拟机的磁盘大小
  10. python if else elif_Python之 if-elif-else
  11. 现代测试技术与软件关系大吗,现代测试技术及应用学习心得
  12. C#高级编程(第七版)读书笔记(4)——对象和类型
  13. 转:Vss2005局域网开发权限设置指南
  14. empty string什么错误_go语言的interface为什么好用?
  15. 远程设备运维云平台软件与常规组态软件的区别(V1.1)?
  16. MPQ4420HGJ DCDC电源设计+SIMetrix+Spice仿真模型
  17. 组态TwinCat软件安装时,There are some files marked for deletion on next reboot.Please reboot first and then
  18. 城市内涝监测预警系统
  19. 游戏服务端究竟解决了什么问题
  20. 什么是长元音和短元音

热门文章

  1. python定义map数据_「每日一练」巧用Python处理列表中的数据
  2. 请求成功得到返回数据还是走到catch_面试:SpringMVC在接收到请求后的调用细节是什么?...
  3. c语言 中insert变量值,c – 在VS2010中的vector :: insert执行意外结果
  4. java 代码块的作用_Java核心(三):代码块的作用
  5. Centos7.6下安装Python3.7
  6. Go 采用 time.After 实现超时控制
  7. C++向量 vector动态数组
  8. socket层内容详解二
  9. zepto和jquery的区别,zepto的不同使用8条小结
  10. HTML 表格tablecaptionthtrtdtheadtbodytfootcolcolgroup