【LeetCode热题100】--108.将有序数组转换为二叉搜索树

news2024/11/24 2:51:25

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

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

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

image-20231003090630522

二叉搜索树的中序遍历是升序序列,因此可以利用中序遍历构建二叉树,总是选择中间位置左边的数字作为根节点。

在给定中序遍历序列数组的情况下,每个子树中的数字在数组中一定是连续的,因此可以通过数组下标范围确定子树包含的数字,下标范围记为[left,right],对于整个中序遍历序列,下标范围从left=0到right=nums.length-1,当left>right时,平衡二叉树为空

/**
 * 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.coloradmin.cn/o/1057335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

扩容LVM卷导致lvm元数据丢失的恢复过程

一、问题描述 因某次MySQL binlog占用过高扩容时,是直接对云盘操作,而扩容直接操作了lvm卷而未操作云盘分区,并随后执行了扩容的partprobe,resize2fs卷等操作;最后,显示并未扩容成功,重启系统后…

008:连续跌三天,买第四天上涨的盈利计算

尽管有连续三天跌,第四天上涨的概率>0.5,但是也不意味着一定会盈利。因为还要看涨跌大幅度。所以,我们应该来假设,于连续跌三天的最后时刻买入,而后第四天临近收盘卖出,看这样的最终盈利是多少。假设我们…

网络-SSE

文章目录 前言一、SSE简介1、SSE特点Polyfill 2、SSE原理3、SSE技术实现:4、SSE应用场景:5、EventSource 二、SSE使用1、前端2、后端3、完整代码前端后端 总结 前言 本文主要记录SSE通讯的简介、使用、以及原理和一个ChatGPT返回数据的demo。 一、SSE简…

专业图像处理软件DxO PhotoLab 7 mac中文特点和功能

DxO PhotoLab 7 mac是一款专业的图像处理软件,它为摄影师和摄影爱好者提供了强大而全面的照片处理和编辑功能。 DxO PhotoLab 7 mac软件特点和功能 强大的RAW和JPEG格式处理能力:DxO PhotoLab 7可以处理来自各种相机的RAW格式图像,包括佳能、…

Redis中Hash类的操作

Redis中Hash类型是键值对的形式保存数据,其中键被称为字段(field),值称为字段值(value)。在一个key中,字段不能重复,而值可以重复。无论是字段还是值都是无序的(保存的次…

React封装自定义表单校验方法

一、表单校验 为什么要封装自定义表单校验方法,因为在后台管理系统中,通常我们会涉及到用户的添加或则信息的修改,这时候通常就涉及表单的相关校验。但通常一个系统中的表单校验针对同一个字段来说是统一的。因此我们就需要将对应的校验字段的…

【LeetCode热题100】--98.验证二叉搜索树

98.验证二叉搜索树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 由于二…

41 二叉树的层序遍历

二叉树的层序遍历 题解1 迭代——BFS题解2 递归——DFS 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 提示&#xff1a; 树中节点数目在范围 [0, 2000] 内-1000 < Node.val <…

实时目标检测:基于YOLOv3和OpenCV的摄像头应用

一、前言 随着人工智能和计算机视觉技术的不断发展,目标检测成为了智能监控、自动驾驶、机器人等领域的关键技术之一。实时目标检测更是对系统的反应速度和准确度提出了更高的要求。本文介绍使用OpenCV和YOLOv3实现实时目标检测的方法,演示如何使用OpenCV调用YOLOv3模型进行…

基于SSM的选课排课系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

克服网络安全压力:如何掌控无限的云数据

管理云中的数字风险比以往任何时候都更加重要。数字化转型引发的云数据呈指数级增长&#xff0c;为安全分析师创造了一个更大的威胁环境。随着威胁行为者继续危害组织最敏感的数据&#xff0c;这一挑战将会加剧。 预计未来五年全球网络犯罪成本将激增&#xff0c;从 2022 年的…

22-框架

框架 解决某类问题&#xff0c;编写的一套类、接口等&#xff0c;可以理解成一个半成品&#xff0c;大多框架都是第三方研发的。 好处&#xff1a;在框架的基础上开发&#xff0c;可以得到优秀的软件架构&#xff0c;并能提高开发效率 框架的形式&#xff1a;一般是把类、接口…

有向图计数优化版原理及C++实现

题目 见前面章节。有向图访问计数的原理及C实现-CSDN博客 第一版 不需要拓扑排序&#xff0c;也不需要并集查找&#xff0c;直接dfs了。完成以下三个职责&#xff1a; 一&#xff0c;DFS那些端点在环上。 二&#xff0c;DFS环上各点此环的长度。 三&#xff0c;DFS非环上各点…

C# 画参数可调调幅波

参阅此&#xff0c; 使用VC输出调幅波的数值和波形_c如何显示下位机传输过来的频谱信号 csdn_bcbobo21cn的博客-CSDN博客 用winform做一下&#xff1b; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Dra…

16-自动化测试——selenium介绍

目录 1.selenium是什么&#xff1f; 2.selenium特点 3.selenium工作原理 1.selenium是什么&#xff1f; selenium是web应用中基于UI的自动化测试框架。 2.selenium特点 支持多平台多浏览器多语言&#xff08;Java、Python、C#、JS、Ruby......&#xff09;有丰富的API 3…

目标检测算法改进系列之Backbone替换为ConvNextV2

ConvNextV2 受掩码自编码机制的启发&#xff0c;本文在 ConvNeXt 的架构基础上延伸出了一个完全卷积掩码自编码器框架——ConvNeXt V2&#xff0c;同时作者设计了一个全新的全局响应归一化(Global Response Normalization, GRN)层以增强原始 ConvNeXt 模块通道间的特征竞争&am…

SpringBoot注册web组件

目录 前言 一、注册Servlet组件 1.1 使用SpringBoot注解加继承HttpServet类注册 1.2 通过继承HttpServet类加配置类来进行注册 二、注册Listener组件 2.1 使用SpringBoot注解和实现ServletContextListener接口注册 2.2 ServletContextListener接口和配置类来进行注册 …

基于YOLOv8的安全帽检测系统(2):Gold-YOLO,遥遥领先,助力行为检测 | 华为诺亚NeurIPS23

目录 1.Yolov8介绍 2.安全帽数据集介绍 3.Gold-YOLO 4.训练结果分析 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它建立在先前YOLO成功基础上…

js 如何判断一个指定的位置点坐标是否落在一个多边形区域内?

1 场景 业务场景举例&#xff1a;快递选择收获区域、车辆电子围栏、运动轨迹路线、地理位置信息检测范围和地图等过滤等等。   比方说地图上有一块区域&#xff08;抽象成多边形&#xff09;&#xff0c;然后里面每一个位置点(像素点)都有对应的GPS的经纬度坐标值&#xff0c…

如何破解压缩包zip解压密码?

Zip压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了zip压缩包的密…