【LeetCode】No.108. Convert Sorted Array to Binary Search Tree -- Java Version
创始人
2024-03-22 10:05:06

题目链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/

1. 题目介绍(Convert Sorted Array to Binary Search Tree)

Given an integer array nums where the elements are sorted in ascending order, convert it to a
height-balanced binary search tree.

【Translate】: 给定一个整数数组nums,其中元素按升序排序,将其转换为高度平衡的二叉搜索树。

【测试用例】:

示例1:
testcase1
示例2:
testcase2

【条件约束】:
constraints

【相似问题】:
在这里插入图片描述

2. 题解

2.1 递归

原题解来自于 ganajayant 的 ✅Java Solution || Recursion || 0ms 100% Faster 🔥🔥🔥 || Beginner Friendly.

该题用递归来进行解题,显得轻松又愉快,下面是两个可能会产生疑问的点:

Q1:为什么nums[mid]会成为根节点 ?
A1:这是因为题目要求我们构建的是一个高度平衡的二叉搜索树,我们在保证左右大小的同时,还要确保高度平衡,如果我们从中间开始,就会有相同数量的元素分别插入到左边和右边。而且该题给我们的是一个升序排列的数组,这也在一定程度上降低了题目的难度。

Q2:为什么 mid 更倾向于 = left+(right-left)/2
A2:为了防止数据溢出。这个问题在较小的数值中是不会出现任何问题的,而在 left+right > Integer.MAX_VALUE 时,就会发生数据溢出,而如果采用left+(right-left)/2(right - left) 是从一个较大的数字中减去一个较小的数字,就会产生一个更小的数字,这样它就很难再数据溢出。而在本题中,条件约束限定了范围,已经确定了它不会产生数据溢出,所以使用哪一种写法均可。在理论上,二者是相等的,两个值都等于 left + (right - left)/2 = (2*left + right - left)/2 = (left + right)/2

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode sortedArrayToBST(int[] nums) {return creatBTS(nums, 0, nums.length-1);}private TreeNode creatBTS(int[] nums, int left, int right){if(left > right) return null;int mid = left + (right-left)/2;TreeNode root = new TreeNode(nums[mid]);root.left = creatBTS(nums, left, mid-1);root.right = creatBTS(nums, mid+1, right);return root;}
}

3. 参考资料

[1] 数据结构——二叉排序树(Java代码实现)| CSDN
[2] why left+(right-left)/2 will not overflow? | StackOverflow

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...