当前位置: 首页 > news >正文

108. 将有序数组转换为二叉搜索树【简单】

108. 将有序数组转换为二叉搜索树【简单】


题目描述:

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

示例 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 <= 10^4
  • -10^4 <= nums[i] <= 10^4
  • nums 按 严格递增 顺序排列

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

在这里插入图片描述

http://www.lryc.cn/news/312337.html

相关文章:

  • vue3中watch和watchEffect的区别!!!
  • 【JavaEE初阶 -- 计算机核心工作机制】
  • springcloud:3.6测试信号量隔离
  • AI化未来:智能科技的新纪元
  • Unity 整体界面淡入淡出效果
  • 反序列化逃逸 [安洵杯 2019]easy_serialize_php1
  • JavaScript中的包装类型详解
  • 如何向各大媒体网站投稿 海外媒体发稿平台有哪些
  • 基于SpringBoot的论坛系统(附项目源码+论文)
  • 堆以及堆的实现
  • 使用RabbitMQ实现延时消息自动取消的简单案例
  • Docker部署(ruoyi案例接上篇Docker之部署前后端分离项目)实施必会!!!!
  • 电脑中已经有多个模组压缩文件,如何通过小火星露谷管理器批量安装
  • [Linux]如何理解kernel、shell、bash
  • C++:Vector的使用
  • Redis之事务(详细解析)
  • Java项目:39 springboot007大学生租房平台的设计与实现
  • 安卓内存信息查看
  • Positional Encoding 位置编码
  • MySql、Navicat 软件安装 + Navicat简单操作(建数据库,表)
  • 逆向案例五、爬取b站评论,表单MD5加密
  • 010-原型链
  • Electron-builder打包安装包——编译篇
  • Red Hat系统升级内核版本
  • Java集合set之HashSet、LinkedHashSet、TreeSet的区别?
  • 全方位碾压chatGPT4的全球最强模型Claude 3发布!速通指南在此!保姆级教学拿脚都能学会!
  • upload-Labs靶场“11-15”关通关教程
  • linux-rpm命令
  • 如何利用python实现自己的modbus-tcp库
  • linux系统-----------搭建LNMP 架构