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

将有序数组转换为高度平衡二叉搜索树 | 详解与Java实现 核心思路:分治法选择中间节点递归构建BST。关键技巧:使用避免溢出。性能保证:时间复杂度 O(n),空间复杂度 O(log n)。适用场景:有序数组转平衡BST、二分查找相关算法。通过这种方法,可以高效地将有序数组转换为高度平衡的二叉搜索树,满足算法题和实际工程的需求。 阅读详情

题目链接 

/**

            转化方式: 不断从中间均分数组

                     根节点: 整个数组的中间节点,此时数组一分为二

                     左子树:左半部分的中间节点 右子树: 右边部分的中间节点

                     以此类推 直到整个数组转化完毕为止

*/

/**
 * 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 {

    //全局变量,避免重复传参
    private int[] nums;

    public TreeNode sortedArrayToBST(int[] nums) {
        /**
            转化方式: 不断从中间均分数组
                     根节点: 整个数组的中间节点,此时数组一分为二
                     左子树:左半部分的中间节点 右子树: 右边部分的中间节点
                     以此类推 直到整个数组转化完毕为止
         */
        this.nums = nums;
        return ArrayToBST(0,nums.length - 1);
    }

    private TreeNode ArrayToBST(int left,int right) {
        if(left > right) {
            return null; //子树处理完毕
        }
        //创建根节点
        int mid = (left + right) / 2;
        TreeNode root = new TreeNode(nums[mid]);

        //左子树
        root.left = ArrayToBST(left,mid - 1);
        //右子树
        root.right = ArrayToBST(mid + 1,right);

        return root;

    }
}

秋招突击——7/31——复习{}——新作{对称二叉树、二叉树的直径、二叉树的层序遍历、将有序数组转换成二叉搜索树} 本来看今天三道简单题,然后一道中等题,准备多复习几道题的,结果没有一道简单题是能够顺利做完的,所以今天浪费了很多时间,项目也没看,然后基本上都在刷题,然后晚上去锻炼了一下,晚上和以前的同学打电话聊天聊了两个小时,明天继续吧!明天就是固定两个小时了,单纯是为了做笔试! 阅读详情

相关推荐

使用STM32微控制器实现光电传感器的接口和数据处理

本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。本文将介绍如何使用STM32微控制器实现光电传感器的接口和数据处理的方案,包括硬件设计、引脚配置、数据采集、滤波和阈值判断等关键步骤,并给出相应的代码示例。在光电传感器的接口和数据处理的实现过程中,要关注系统的性能。在使用STM32微控制器实现光电传感器的接口和数据处理之前,需要设计一个合适的硬件平台。

weixin_66608063的博客 3204

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

题目描述:给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡 二叉搜索树。 高度平衡二叉树是一棵满足“每个节点的左右两个子树的高度差的绝对值不超过1”的二叉树。 示例1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案 方法一:中序遍历,总是选择中间位置左边的数字作为根节点 选择中间位置左边的数字作为根节点,则根节点的下标为m..

qq_51277752的博客 1025

告别全局搜索!7种SRP-PHAT快速算法实战对比:哪个更适合你的麦克风阵列?

本文深入探讨了7种SRP-PHAT改进算法在声源定位领域的实战表现,包括SRC、CFRC、SPF等方案。通过对比计算效率、定位精度和环境鲁棒性等核心指标,为不同场景(如会议室、智能家居、工业机器人)提供算法选型建议,帮助工程师优化麦克风阵列性能。

weixin_42546392的博客 398

力扣108. 将有序数组转换为二叉搜索树(三种思路)

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5]输入:nums = [1,3] 输出:[3,1] 解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。提示:-104 <= nums[i] <= 104 nums 按 严格递增 顺序排列。

weixin_51311741的博客 1743

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译

本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。

oo7890的博客 634

rk3568 android 11.0 userdata 改为ext4格式

功能:解决设备在恢复出厂设置进行擦除数据的时候卡住问题。 1.修改userdata分区为ext4格式 diff --git a/device/rockchip/common/scripts/fstab_tools/fstab.in b/device/rockchip/common/scripts/fstab_tools/fstab.in index 583e75579d..036336835d 100755 --- a/device/rockchip/common/scripts/fstab_tools/

chgh1306的专栏 2576

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

构造思路和构造二叉搜索树是一样的,不断中间分割,然后递归处理左区间,右区间,也可以说是分治。此时相信大家应该对通过递归函数的返回值来增删二叉树很熟悉了,这也是常规操作。在定义区间的过程中我们又一次强调了循环不变量的重要性。最后依然给出迭代的方法,其实就是模拟取中间元素,然后不断分割去构造二叉树的过程。

qq_46130027的博客 635

侧杆试验 - 高速撞击 - 显式动力学 - ANSYS Workbench

显式动力学是一种时间积分方法,用于在速度很重要时执行动态模拟。显式动力学考虑快速变化的条件或不连续事件,例如自由落体、高速撞击和施加的负载。由于这些“非线性动力学”已集成到模拟中,因此显式动力学是模拟高度瞬态物理现象的首选。有些侧面碰撞是指车辆侧向撞上路边的坚硬物体,如树木或电线杆。这通常是由于驾驶员失去控制、超速、误判拐角或在湿滑路面上打滑造成的。

jianqimingtian的博客 1289

【每日力扣31】将有序数组转换为二叉搜索树

一、题目[LeetCode-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] .

micah_yaokunkun的博客 784

Diffusion Models扩散模型与深度学习(数学原理和代码解读)

​ 此前GANs霸占各大顶会很多年,DDPM的出现让人耳目一新!经过这两年的发展,Diffusion Models能在图像生成、超分辨率重建、点云生成、语音生成等领域达到SOTA。这篇文章旨在帮助没有了解过的读者入门,《Diffusion Models与深度学习专栏》已经写了将近三十篇文章,既有原理公式和必备基础知识的讲解,也有代码详细实战解读,还有前沿热门应用,欢迎读者订阅。

沉迷单车的追风少年 4万+

Nvidia Orin Driveos Camera 介绍及调试详解

自动驾驶-nvidia orin driveos Camera 驱动详解及调试

u011803281的博客 2992

算法23: 将有序数组转换为二叉搜索树

学习了二叉树的中序遍历算法

qq_40775800的博客 377

抖音 X-Gorgon 加密算法逆向与 Python 爬虫实战(2026 最新版)

抖音(TikTok 国内版)作为日活超 8 亿的超级 App,其反爬体系在国内互联网中属于顶级难度。核心签名参数X-Gorgon和X-Khronos是几乎所有业务接口(视频详情、评论、搜索、用户主页)的“通行证”。没有正确的 Gorgon 签名,服务器直接返回403或。市面上的教程大多停留在2023 年之前的 V4 版本,而抖音在 2025 年底全面升级到了V6 协议,算法结构、加密常数、混淆方式全部重构。

2201_76125261的博客 356

刷图记录 二叉树-32 HOT100 二叉树-7:108. 将有序数组转换为二叉搜索树

给你一个整数数组nums,其中元素已经按排列,请你将其转换为一棵 平衡 二叉搜索树。难度:简单实现语言:python。

weixin_44610684的博客 820

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

刷题记录(回顾)二叉树-32 HOT100 二叉树-7: ​108. 将有序数组转换为二叉搜索树

难度:简单给你一个整数数组nums,其中元素已经按排列,请你将其转换为一棵平衡二叉搜索树。[0,-10,5,null,-3,null,9] 也将被视为正确答案:[3,1][1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

weixin_44610684的博客 480

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

7.20代码随想录训练营第23天 | 二叉树题目练习:669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树

今天没有时间分析题目,只是把代码抄了一遍,之后有时间再回来编辑一下。今天继续来做二叉树的题目。

cheeyyy的博客 83

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[算法训练营] 二叉树专题(三)

本篇为二叉树专题的刷题题单,总共7道题,每道题都有对应的链接。边听歌边刷题吧

进一步有一步的欢喜 300

Day 23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇

​ 遍历和迭代的思想都要熟悉;

qq_46025584的博客 2127

代码随想录刷题day21丨669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树,二叉树总结

看到递归,就去想:返回值、参数是什么?终止条件是什么?单层逻辑是什么?递归与迭代究竟谁优谁劣呢?从时间复杂度上其实迭代法和递归法差不多(在不考虑函数调用开销和函数调用产生的堆栈开销),但是空间复杂度上,递归开销会大一些,因为递归需要系统堆栈存参数返回值等等。递归更容易让程序员理解,但收敛不好,容易栈溢出。这么说吧,递归是方便了程序员,难为了机器(各种保存参数,各种进栈出栈)。在实际项目开发的过程中我们是要尽量避免递归!因为项目代码参数、调用关系都比较复杂,不容易控制递归深度,甚至会栈溢出。

m0_75195038的博客 1117

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

二叉搜索树左子树节点的值小于根节点的值。右子树节点的值大于根节点的值。左右子树也分别是二叉搜索树。这种结构使得查找、插入和删除操作在平均情况下具有较高的效率。平衡二叉搜索树是一种特殊的二叉搜索树,它在保持二叉搜索树有序性的同时,还满足平衡性条件,确保树的高度尽可能低,以保证操作的高效性。保持平衡:通过严格的平衡条件和旋转操作,确保树的高度始终保持在O(log n)级别。高效操作:由于高度有限,查找、插入和删除等操作的时间复杂度均为O(log n),即使在最坏情况下也能够保持较高的效率。结构复杂性。

qq_46060468的博客 1370

算法练习之将有序数组转换为二叉搜索树,平衡二叉树

1.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 题中,高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 ...

aituochang1886的博客 233

LeetCode 热题 100——二叉树——二叉树的层序遍历&将有序数组转换为二叉搜索树

给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内。

weixin_53318497的博客 887

代码随想录算法训练营第21天|LeetCode 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

思路:递归,利用二叉搜索树的性质,找到在区间内部的节点保留,并返回。与二叉搜索树节点删除不同之处树是:二叉搜索树节点删除是,利用性质,找到要删除的节点;修剪是,利用性质,找到要保留的节点。

summersnowzgq的博客 1319

Day19 力扣二叉树 : 669. 修剪二叉搜索树 |108.将有序数组转换为二叉搜索树 | 538.把二叉搜索树转换为累加树 |二叉树总结

首先一定是二叉树的基本概念、二叉树类的写法每一道题都可以用递归去做,递归三部曲返回值?参数?单层递归逻辑?有一种确定返回值的方法,我还没有掌握参数一般比较简单单层递归逻辑是具体的题目了,也是较难。至于迭代法,一刷我还没有掌握,在层序遍历那里经常用有递归就有回溯,我理解回溯的过程,但是我还不能看到一类题就想到回溯,也不能看出隐藏的回溯,但是没关系,下一章节就是回溯,我体会一下。题的类型:直接来自代码随想录的总结。

leeBerson的博客 149

LeetCode 二叉树的层次遍历 II / 将有序数组转换为二叉搜索树 / 平衡二叉树 (9)

107. 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍历为: [ [15, 7], [9, 20]...

Klay Ye 479

代码随想录算法训练营第二十三天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

【代码】代码随想录算法训练营第二十三天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树。

qq_51395785的博客 1358
上一篇: Redis----五种常见数据类型
下一篇: 二叉树----8.验证二叉搜索树
码破苍穹ovo
博客等级 码龄2年 377粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值