Leetcode 108.将有序数组转换为二叉搜索树

news/2024/10/21 15:33:09/

题目描述

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 

平衡

 二叉搜索树。

示例 1:

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

示例 2:

输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 按 严格递增 顺序排列

方法一

思路:

要把数组转换为平衡数,左右两侧的深度相差不能超过1,所以很自然的选择中位数当作当前子树的根。

代码:

java">/*** 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 helper(nums,0,nums.length-1);}public TreeNode helper(int[] nums,int left,int right){if(left>right) return null;int mid=(left+right)/2;TreeNode root=new TreeNode(nums[mid]);root.left=helper(nums,left,mid-1);root.right=helper(nums,mid+1,right);return root;}
}

参考链接:


http://www.ppmy.cn/news/1455104.html

相关文章

解决mac出现npm install 卡在“sill idealTree buildDeps“的问题

问题出现场景&#xff1a; 在新建一个项目尝试npm install命令时&#xff0c;一直卡在“sill idealTree buildDeps“ 尝试过的无效解决方案包括&#xff1a; 切换/关闭梯子重启更换网络更换npm源更新删除 package.json 最终解决方案&#xff1a; 引起问题的原因是MacOS设置中…

DataGrip2024的安装

DataGrip2024的安装 获取方法在最后&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;2024版本 下一步 确定安装路径 配置安装项 菜单目录 默认即可 安装结束 后续教程关注公众号&#xff1a;爬虫探索者&#xff0c;发送datagrip2024获取&#xff0c;安装方…

【LLM】动手部署个人知识库助手

文章目录 动手部署个人知识库助手环境依赖项目运行总结 动手部署个人知识库助手 经过前面章节的学习&#xff0c;理解了LLM、向量知识库等知识&#xff0c;本章节开始实践部署个人知识库助手。 本次部署的项目github地址个人知识库助手项目 环境依赖 技术资源要求 CPU: Int…

力扣每日一题-去掉最低工资和最高工资后的工资平均值-2024.5.3

力扣题目&#xff1a;去掉最低工资和最高工资后的工资平均值 开篇 题目链接: 1491.去掉最低工资和最高工资后的工资平均值 题目描述 代码思路 太简单了。先利用sort排序对数组进行从小到大排序&#xff0c;然后计算时数组最小值和最大值不要加进去即可。 代码纯享版 clas…

东湖高新区2023年现代服务业政策奖励申报对象、申报方式

东湖高新区信息服务、科技服务、科创金融、新消费、商务服务、现代物流等行业的服务业企业开展2023年度现代服务业政策奖励申报工作,有关申报内容如下&#xff0c;东湖高新区的企业单位可以了解一下&#xff0c;有问题看名字找我。 一、申报对象 工商注册、税务关系及统计关系…

Python+Selenium 实现自动化测试

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 安装selenium 打开命令控制符输入&#xff1a;pip install -U …

[C++基础学习-04]----C++数组详解

前言 在C中&#xff0c;数组是一种用来存储相同类型元素的数据结构。一维数组是最简单的数组形式&#xff0c;它由一系列按顺序存储的元素组成。二维数组则是由一维数组构成的数组&#xff0c;可以看作是一堆一维数组堆叠在一起形成的矩阵。 正文 01-数组简介 一维数组和二维…

VBA 使用相对引用,录制宏,批量处理数据

目录 一. 需求二. 录制宏2.1 使用相对引用2.2 录制宏2.3 执行宏 一. 需求 ⏹有数据如下图的左上角所示&#xff0c;现在想要该部分数据批量处理为右上角的样子。 ⏹每一步处理可拆解为 在每一行数据前插入两个空白行将标题复制到插入的最后一个空白行处添加边框线 &#x1…