力扣每日一题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/5

通过次数

471.9K

提交次数

601.7K

通过率

78.4%

思路

平衡二叉搜索树有两个要求

1、每个节点左右子树的高度差不能超过1

2、每个节点的大于所有左子树结点,小于所有右子树结点。

要满足第一个条件的话,我们可以递归建树,每次将中间的值作为根节点,然后递归调用左右两部分。

要满足第二个条件,只需将root->left指向左边部分递归的结果,root->right指向右边部分递归的结果即可。

代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode *creat(int lo,int hi,vector<int>& nums){if(lo>hi) return NULL;int mid=(lo+hi)/2;TreeNode *root=new TreeNode;root->val=nums[mid];root->left=creat(lo,mid-1,nums);root->right=creat(mid+1,hi,nums);return root;}TreeNode* sortedArrayToBST(vector<int>& nums) {int lo=0,hi=nums.size()-1;TreeNode *root=creat(lo,hi,nums);return root;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8279.shtml

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

相关文章

VS编辑器下使用MFC完成学生成绩统计分析系统

背景&#xff1a; &#xff08;一&#xff09;实验目的 通过该实验&#xff0c;使学生掌握windows程序设计的基本方法。掌握学生管理中学生成绩统计分析方面的基本知识&#xff0c;熟练应用数据库技术完成对学生成绩管理活动中各类信息的增加、修改、删除、查询等操作。通过处…

解锁AI的神秘力量:LangChain4j带你步入智能化实践之门

关注微信公众号 “程序员小胖” 每日技术干货&#xff0c;第一时间送达&#xff01; 引言 在数字化转型的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;正逐渐成为推动企业创新和增长的关键力量。然而&#xff0c;将AI技术融入到日常业务流程并非易事&#xff0c;它…

tr,cut,sort,uniq,seq命令的使用

1.tr tr命令是一个文本处理工具&#xff0c;跟正则表达式&#xff0c;字符串。有替换&#xff0c;压缩&#xff0c;删除的功能。 -s压缩 -d删除 命令1&#xff1a;tr a b。将出现的a替换成b。 输入---aaa---bdd--- 输出---bbb---bdd--- 命令&#xff1a;tr -d [字符1字符…

Xshell7、XFtp无法安装报错问题

报错信息&#xff1a; xshell产品无法安装,请验证来源是否存在,是否可以访问 解决方案&#xff1a; 打开本地路径&#xff1a;C:\Program Files (x86)\InstallShield Installation Information 将次文件删掉&#xff0c;重新点击xshell安装程序&#xff0c;重新安装即可

《中国农村经济》文本分析技术最新进展总结盘点

[1]彭澎,周月书.新世纪以来农村金融改革的政策轨迹、理论逻辑与实践效果——基于2004-2022年中央“一号文件”的文本分析[J].中国农村经济,2022,(09):2-23. 关键词&#xff1a;农村金融改革;;中央“一号文件”;;三叉理论;;内容分析法 摘要&#xff1a;本文在对2004-2…

网络工程师------第二十一天

1、语言&#xff1a; 汇编语言是用助记符代替操作码、地址符号代替操作数的面向机器的语言&#xff1b; 解释程序对源程序一边翻译&#xff0c;一边执行&#xff0c;不产生目标程序&#xff1b; 机器语言&#xff1a;以二进制代码表示的机器指令的集合 高级语言&#xff1a…

H5视频付费点播打赏影视系统程序全开源运营版

这是一款视频打赏源码&#xff0c;勿做非法用途&#xff0c;由用户亲测功能完善&#xff0c;源码仅用于学习使用&#xff0c;分享链接是用户云盘&#xff0c;具有时效性&#xff0c;感兴趣的可以去学习。 thinkphp开发&#xff0c;前后端分离设计&#xff0c;支持游客登陆、VIP…

富格林:察觉虚假招数及时出金远离

富格林指出&#xff0c;在黄金现货市场&#xff0c;平衡盈亏风险一直是投资者的必修课&#xff0c;在进入市场之前需了解做单盈利技能&#xff0c;此外还需了解其中会存在的风险&#xff0c;在进入市场做单期间察觉虚假套路要及时的出金远离避免受害亏损。以下也总结几点正规的…

【竞技宝】欧冠:多特淘汰大巴黎进决赛,姆巴佩迷失

多特蒙德在本赛季欧冠半决赛第二回合较量中,跟大巴黎队狭路相逢。赛前,大部分球迷和媒体都看好坐拥姆巴佩的大巴黎队,可以靠着主场作战的优势,逆转多特蒙德晋级欧冠决赛。大巴黎队主场作战确实创造出不少得分机会,只可惜球队运气有些差,射门都打在了多特蒙德横梁上。反观多特蒙…

关于XDC 约束固化flash流程

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]—设置spi4线上电拿取速度会比1快&#xff08;必要&#xff09; set_property CONFIG_MODE SPIx4 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]—设置50&#xff0c;上电从f…

浅谈消息队列和云存储

1970年代末&#xff0c;消息系统用于管理多主机的打印作业&#xff0c;这种削峰解耦的能力逐渐被标准化为“点对点模型”和稍复杂的“发布订阅模型”&#xff0c;实现了数据处理的分布式协同。随着时代的发展&#xff0c;Kafka&#xff0c;Amazon SQS&#xff0c;RocketMQ&…

灌溉排涝乙级至甲级资质提升:企业需要满足的升级标准

灌溉排涝企业从乙级资质提升至甲级资质时&#xff0c;需要满足一系列的升级标准。以下是一些主要的升级标准&#xff1a; 技术实力提升&#xff1a;企业需加大技术研发投入&#xff0c;引进或研发先进的灌溉排涝技术和设备&#xff0c;以提高公司的技术水平和创新能力。同时&a…

golang内置包里面的sort.Slice 切片排序函数使用示例

go语言里面用的最多的数据类型应该是切片Slice了&#xff0c; 今天就给大家介绍这个go内置包里面的切片排序函数的使用方法 函数原型 func Slice(x any, less func(i, j int) bool) 参数说明 这个函数有2个参数&#xff0c; 第一个是你要进行排序的slice切片&#xff0c;地个…

国内免费AI聊天机器人(ChatGPT)推荐(下)含ChatGPT4.0版本

作者主页&#xff1a;点击&#xff01; 国内免费AI推荐专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月7日10点39分 现在&#xff0c;国内各种免费AI聊天机器人(ChatGPT)层出不穷&#xff0c;功能强大、玩法多样&#xff0c;可以满足你的不同需求。 今天&a…

知道创宇安全服务实习

自我介绍攻防演练讲一下&#xff0c;我讲到了内网利用&#xff0c;用到了frp/nps这种nps直接扫不会有被发现吗&#xff1f;cs搭建在vps&#xff0c;有做什么隐藏吗&#xff0c;&#xff08;端口或者cdn之类的&#xff09;域前置了解吗cs上传的木马免杀了吗问了linux怎么查看进程…

H7-TOOL的双硬件串口同时运行Modbus主机和从机方法,方便大家Modbus测试验证(2024-05-06)

H7-TOOL的双硬件串口同时运行Modbus主机和从机方法&#xff0c;方便大家Modbus测试验证&#xff08;2024-05-06&#xff09; 使用这种方法&#xff0c;仅使用一个TOOL就可以方便同时运行Modbus主机和从机。 【Modbus专题视频】 可以用来熟悉Modbus协议 BSP视频教程第23期…

Docker介绍及使用

Docker简介 Docker 是一种用于开发、部署和运行应用程序的开源平台。它使用容器化技术&#xff0c;将应用程序及其所有依赖项打包到一个轻型的可移植单元中&#xff0c;称为容器。容器可以快速启动、停止和移动&#xff0c;并且可以在各种环境中运行&#xff0c;包括本地计算机…

VS编辑器下使用MFC完成研究生管理系统设计

背景&#xff1a; &#xff08;一&#xff09;实验目的 通过该实验&#xff0c;使学生掌握windows程序设计的基本方法。掌握学籍管理的基本内容&#xff0c;熟练应用数据库技术和通用组件&#xff0c;实现研究生信息的增、删、改、查功能。通过处理过程对计算机软件系统工作原…

【Spring】8.深入探索Spring Context:由浅入深直击Spring的心脏

Spring Context 是 Spring 框架中的一个核心组件&#xff0c;负责提供 Spring 应用的运行时环境。Context 表示“上下文”或“环境”&#xff0c;在 Spring 中&#xff0c;它不仅管理着应用中的对象&#xff08;称为 Beans&#xff09;&#xff0c;还提供了许多其他关键服务&am…

2024最新 Gradle 入门教程

&#x1f680; 2024最新 Gradle 入门教程 &#x1f31f; 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍…