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

news/2025/2/26 5:44:11

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

  • 思路

给你一个整数数组 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] 都是高度平衡二叉搜索树。

思路

二叉搜索树的中序遍历是升序序列,题目给定的数组是按照升序排序的有序数组,因此可以确保数组是二叉搜索树的中序遍历序列。

中序遍历,总是选择中间位置左边的数字作为根节点
选择中间位置左边的数字作为根节点,则根节点的下标为mid=(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 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.niftyadmin.cn/n/5868087.html

相关文章

基于 spring boot+vue 的仓储管理系统 的设计与实现

下载链接 1 引言 随着全球化的加速和国际互联网技术的飞速发展,越来越多的企业开始构 建自己的电子商务平台。在这个信息化时代,基于网络的信息服务和商务服务 已经成为现代企业运营的核心组成部分。不再满足于仅有发布信息功能的静态 网站&#xff0…

TDengine 产品组件:taosExplorer

taosExplorer 是一个为用户提供 TDengine 实例的可视化数据库管理交互工具的 web 服务,使用浏览器打开。虽然它没有开源,但随开源版安装包免费提供。 本节主要讲述其安装和部署。它的各项功能都是基于简单易上手的图形界面,可以直接尝试&…

vscode多文件编译构建(CMake)和调试C++

目录 1. CMake 基础构建工具及作用相关配置文件 2. 配置 tasks.json关键字段详细解释 3. 配置 launch.json关键字段详细解释 4. 配置 CMakeLists.txt关键部分详细解释 5. 构建和调试项目1. 仅构建项目1.1 任务执行顺序1.2 cmake 任务执行详情1.3 build 任务执行详情1.4 构建后的…

tensorflow + sionna 安装踩坑记录(待补充)

1.本人基础配置 cpu笔记本一台,使用mobaxterm远程控制gpu服务器, 没有sudo权限。 2.Tensorflow安装 请打开官方英文版安装介绍 https://tensorflow.google.cn/install/pip,中文版可能会缺失部分提示信息。 conda create -n tf_sionna pyt…

《白帽子讲Web安全》学习:深入解析Cookie与会话安全

目录 导言 一、Cookie 的原理与作用 二、Cookie 面临的安全风险 三、Cookie的核心安全属性 1.Domain 属性 2.Path 属性 3.Expires 属性 4.HttpOnly 属性 5.Secure 属性 6.SameSite 属性 7.SameParty 属性 四、安全使用Cookie 1.正确设置Cookie属性值 2.Cookie前缀…

C语言(13)------------>do-while循环

1.do-while循环的语法 我们知道C语言有三大结构,顺序、选择、循环。我们可以使用while循环、for循环、do-while循环实现循环结构。之前的博客中提及到了前两者的技术实现。可以参考: C语言(11)------------->while循…

【C/C++】理解C++内存与Linux虚拟地址空间的关系---带你通透C++中所有数据

每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本质编写的原因是我在复习过程中突然发现虚拟地址空间和C内存划分我好想有点分不清时,进行查询各类资料和整理各类文章后得出的文章&#xff…

django filter 不等于

然,我很乐意帮助你解决关于Django Filter的问题。首先,请确保你具体指的是Django的django-filter库,这是一个非常流行的第三方库,用于在Django项目中提供更复杂的搜索和过滤功能。 不等于的过滤 如果你需要在Django中使用django-…