Leetcode 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] 都是高度平衡二叉搜索树。

提示:

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

方法一

思路:

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

代码:

/*** 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.mzph.cn/news/831215.shtml

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

相关文章

机器学习-什么是 PCA?

一、PCA是什么&#xff1f; PCA 即主成分分析&#xff08;Principal Component Analysis&#xff09;哦&#xff01;它是一种统计分析方法&#xff0c;主要用于掌握事物的主要矛盾。PCA能从多元事物中解析出主要影响因素&#xff0c;揭示事物的本质&#xff0c;简化复杂问题。…

改变 centos yum源 repo

centos 使用自带的 repo 源 速度慢&#xff0c;可以改为国内的&#xff0c;需要改两个地方 centos7.repo CentOS-Base.repo 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载对应版本repo文件…

ICMP详解

3 ICMP ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制报文协议&#xff09;是一个差错报告机制&#xff0c;是TCP/IP协议簇中的一个重要子协议&#xff0c;通常被IP层或更高层协议&#xff08;TCP或UDP&#xff09;使用&#xff0c;属于网络层协议…

python验证输入的IP地址是否正确

目录 一.前言 二.代码 三.代码分析 一.前言 IP是一组规则,它定义了计算机网络中的设备如何通信。它是一套协议,规定了如何将数据包从一台设备发送到另一台设备。 二.代码 cause = True # 设置判断网址是否正确的标志变量为真 ip …

Uniapp好看登录注册页面

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

VUE2从入门到精通(二)

118、ref引用 【1】JQuery里面的$("#app")。vue mv vm 【2】在vue中&#xff0c;程序员不需要操作dom。程序员只需要维护好数据即可&#xff08;数据驱动视图&#xff09;。所以在vue下&#xff0c;强烈不建议使用jquery&#xff01;&#xff01;&#xff01; 【3】假…

(汇总)vue中在不同页面之间-4种传递参数的方式

Vue项目页面间传递参数和参数存储有很多种&#xff0c;常见的&#xff1a; &#xff08;参考链接&#xff1a;www.qinglite.cn/doc/4603647… url里加参数&#xff0c;比如&#xff1a;/find?idxxx&#xff0c;或/find/xxx&#xff0c;适合少量数据&#xff0c;优点是刷新页面…

大历史下的 tcp:恼人的 timewait

tcp timewait 是个恼人的状态&#xff0c;它的恶心自两类恶心的询问&#xff0c;oncall 和面试。大概诸如 “如何减少 timewait socket 数量”&#xff0c;“tw_reuse 和 tw_recycle …”&#xff0c;如果只为应用&#xff0c;用 reset 关连接就够了。 timewait 状态的根本目的…

4G+北斗太阳能定位终端:一键报警+倾覆报警 双重保障船舶安全

海上作业环境复杂多变&#xff0c;海上航行充满了各种不确定性和风险&#xff0c;安全事故时有发生&#xff0c;因此海上安全与应急响应一直是渔业和海运行业关注的重点。为了提高海上安全保障水平&#xff0c;4G北斗太阳能定位终端应运而生&#xff0c;它集成了一键报警和倾覆…

Edge浏览器新特性深度解析,写作ai免费软件

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

Spring MVC系列之异步请求

概述 Spring MVC的本质其实就是一个Servlet。在理解Spring MVC如何支持异步请求之前&#xff0c;需要先知道Servlet3异步如何支持异步请求。参考Servlet系列之Servlet3异步。 Spring MVC对异步请求的支持主要从三个类来看&#xff1a; AsyncWebRequest&#xff1a;requestWe…

【数据结构】:链表的带环问题

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构 &#x1f337;追光的人&#xff0c;终会万丈光芒 前言&#xff1a; 链表的带环问题在链表中是一类比较难的问题&#xff0c;它对我们的思维有一个比较高的要求&#xff0c;但是这一类…

AI大模型探索之路-训练篇10:大语言模型Transformer库-Tokenizer组件实践

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

DS:顺序表、单链表的相关OJ题训练

欢迎各位来到 Harper.Lee 的学习小世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客主页 想要一起进步的uu可以来后台找我交流哦&#xff01; 在DS&#xff1a;单链表的实现 和 DS&#xff1a;顺序表的实现这两篇文章中&#xff0c;我详细介绍了顺序表和单链表的…

使用LinkAI创建AI智能体,并快速接入到微信/企微/公众号/钉钉/飞书

​ LinkAI 作为企业级一站式AI Agent 智能体搭建与接入平台&#xff0c;不仅为用户和客户提供能够快速搭建具备行业知识和个性化设定的 AI 智能体的能力&#xff1b;还基于企业级场景提供丰富的应用接入能力&#xff0c;让智能体不再是“玩具”&#xff0c;而是真正能够落地应用…

C/C++ 字符串与时间戳互相转换

//时间戳转string 1713175204 2024-04-15 18:00:04struct tm *ttime;time_t flag_time time(NULL);ttime localtime(&flag_time);char time_str[100];cout << flag_time <<endl;cout << mktime(ttime) <<endl;sprintf(time_str,"%04d-%02…

PHP的数组练习实验

实 验 目 的 掌握索引和关联数组&#xff0c;以及下标和元素概念&#xff1b; 掌握数组创建、初始化&#xff0c;以及元素添加、删除、修改操作&#xff1b; 掌握foreach作用、语法、执行过程和使用&#xff1b; 能应用数组输出表格和数据。 任务1&#xff1a;使用一维索引数…

uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之使用jar包插件

前言 如果你不会编写安卓插件,你可以先看看我之前零基础的文章(uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件), 我们使用第三方包,jar包编写安卓插件 开始 把依赖包,放到某个模块的/libs目录(myTestPlug/libs) 还要到build…

R语言的学习—5—多元数据直观表示

1、数据读取 ## 数据整理 d3.1read.xlsx(adstats.xlsx,d3.1,rowNamesT);d3.1 #读取adstats.xlsx表格d3.1数据 barplot(apply(d3.1,1,mean)) #按行做均值条形图 barplot(apply(d3.1,1,mean),las3) barplot(apply(d3.1,2,mean)) #按列做均值图条形图 barplot(a…

表名不是固定的,django和flask怎样增改删查这个数据表?

在Django和Flask中&#xff0c;操作数据表通常涉及使用ORM&#xff08;对象关系映射&#xff09;或者原生的SQL查询。然而&#xff0c;你提到的sea()函数返回的表名是一个动态生成的字符串&#xff0c;这增加了复杂性&#xff0c;因为ORM通常期望表名是固定的。在这种情况下&am…