LeetCode-108

article/2025/10/19 20:08:19

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

题目
给一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。
高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

转换后的高度平衡二叉搜索树,结果不唯一

示例
输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

题解

二叉搜索树的中序遍历是升序序列,题目给出的数组是升序数组,故该数组即为二叉搜索树的中序遍历序列。而又要求二叉搜索树高度平衡,则应该把数组的中间数字作为树的根节点,其余数字分别位于左右子树中,递归创建平衡二叉搜索树,递归的边界条件是该树为空。
考虑到数组元素个数奇偶性,若为奇数,则数组的中间数字唯一,作为根节点,左右子树个数相等;若为偶数,则数组的中间数字不唯一,可以任选靠左或靠右的元素,左右子树个数相差1。

更多题解

代码

  1. 当 left>right 时树为空,结束递归
  2. rand()%2 结果随机为0或1
class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {return helper(nums,0,nums.size()-1);}//递归构造高度平衡二叉搜索树TreeNode* helper(vector<int>& nums,int left,int right){//判空if(left>right){return nullptr;}//取数组中间元素作为根节点int mid = (left + right + rand() % 2) / 2;TreeNode* root=new TreeNode(nums[mid]);//递归构造左子树root->left=helper(nums,left,mid-1);//递归构造右子树root->right=helper(nums,mid+1,right);return root;}
};

http://chatgpt.dhexx.cn/article/ANBmUPaO.shtml

相关文章

华为机试108题(C 语言解答)

Nowcoder题库链接&#xff1a;华为机试 HJ1 字符串最后一个单词的长度&#xff08;字符串&#xff09; 输入&#xff1a;hello nowcoder输出&#xff1a;8说明&#xff1a; 最后一个单词为nowcoder&#xff0c;长度为8 示例代码: HJ1.c #include <stdio.h> #include &l…

米哈游108薪年终奖,假的

记者丨鄢子为 韩璐 编辑丨鄢子为 米哈游年终奖发108个月的工资&#xff1f;假的。 1月12日&#xff0c;针对“年终奖108薪”的消息&#xff0c;米哈游方面回应《21CBR》记者称&#xff0c;消息不实。 之所以有这样的流言传出&#xff0c;或许是因为米哈游现金流充沛&#xff0c…

【计算机毕业设计】108精品在线试题库系统

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;…

详细解释数据挖掘的十大算法

在一份调查问卷中&#xff0c;三个独立专家小组投票选出的十大最有影响力的数据挖掘算法&#xff0c;今天我打算用简单的语言来解释一下。 一旦你知道了这些算法是什么、怎么工作、能做什么、在哪里能找到&#xff0c;我希望你能把这篇博文当做一个跳板&#xff0c;学习更多的数…

数据挖掘领域十大经典算法之—EM算法

相关文章&#xff1a; 数据挖掘领域十大经典算法之—C4.5算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—K-Means算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—Apriori算法数据挖掘领域十大经典算法之—EM算法数据挖掘领域十大…

数据挖掘经典十大算法_ID3算法

一、ID3算法介绍 ID3算法通过自顶向下的方式构建一棵决策树来进行学习&#xff0c;每一次选择的是当前样本集中具有最大信息增益的属性作为测试属性。样本集根据测试属性的属性值进行划分&#xff0c;测试属性有多少取值就能够将样本属性划分为多少子样本集。 构建决策树&…

常用数据挖掘算法

本文对数据挖掘的基础理论&#xff0c;做个框架性的总结概要&#xff0c;罗列一些通用的数据挖掘的算法和思路&#xff0c;对于自己来讲是一个回顾&#xff0c;同时也便于自己以后查阅。 频繁模式挖掘&#xff0c;关系挖掘&#xff0c;以及相互关系挖掘 所谓频繁模式挖掘&…

【数据挖掘】数据挖掘简介及十大经典算法

数据挖掘十大经典算法系列&#xff0c;点击链接直接跳转&#xff1a; 数据挖掘简介及十大经典算法&#xff08;大纲索引&#xff09; 1. 数据挖掘十大经典算法之——C4.5 算法 2. 数据挖掘十大经典算法之——K-Means 算法 3. 数据挖掘十大经典算法之——SVM 算法 4. 数据挖掘十…

数据挖掘十大经典算法 整理

数据挖掘的主要任务是分类、聚类、关联分析、预测、时序模式和偏差分析。 &#xff08;一&#xff09;C4.5 算法 C4.5算法是机器学习中的一种分类决策树算法&#xff0c;其核心是ID3 算法&#xff0c;C4.5算法继承了ID3算法的优点&#xff0c;并在以下几方面对ID3算法进行了改…

数据挖掘领域十大经典算法之—SVM算法(超详细附代码)

相关文章&#xff1a; 数据挖掘领域十大经典算法之—C4.5算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—K-Means算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—Apriori算法数据挖掘领域十大经典算法之—EM算法数据挖掘领域十大…

数据挖掘十大算法--Apriori算法

一、Apriori 算法概述 Apriori 算法是一种最有影响力的挖掘布尔关联规则的频繁项集的 算法&#xff0c;它是由Rakesh Agrawal 和RamakrishnanSkrikant 提出的。它使用一种称作逐层搜索的迭代方法&#xff0c;k- 项集用于探索&#xff08;k1&#xff09;- 项集。首先&#xff0c…

数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)

相关文章&#xff1a; 数据挖掘领域十大经典算法之—C4.5算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—K-Means算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经典算法之—SVM算法&#xff08;超详细附代码&#xff09;数据挖掘领域十大经…

数据挖掘十大经典算法(包括各自优缺点 / 适用数据场景)

本文主要分析皆来自其他资料&#xff0c;借用较为权威的总结来对我已经学习的这些经典算法做一个极为精简的概述&#xff08;根据自身经验有一定修改&#xff09;&#xff0c;另外同时附上机器学习实战中作者对各种算法的评价。另外机器学习实战这本书是本人看了这么多书籍或者…

一文弄懂数据挖掘的十大算法,数据挖掘算法原理讲解

​一个优秀的数据分析师不仅要掌握基本的统计、数据库、数据分析方法、思维、数据分析工具和技能&#xff0c;还要掌握一些数据挖掘的思路&#xff0c;帮助我们挖掘出有价值的数据&#xff0c;这也是数据分析专家和一般数据分析师的差距之一。 数据挖掘主要分为三类&#xff1a…

数据挖掘领域十大经典算法

一、什么是数据挖掘&#xff1f; 数据挖掘是人工智能和数据库领域研究的热点问题&#xff0c;所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。数据挖掘是一种决策支持过程&#xff0c;它主要基于人工智能、机器学习、模式识别、…

数据挖掘的10大算法

一个优秀的数据分析师,除了要掌握基本的统计学、数据库、数据分析方法、思维、数据分析工具技能之外,还需要掌握一些数据挖掘的思想,帮助我们挖掘出有价值的数据,这也是数据分析专家和一般数据分析师的差距之一。 数据挖掘主要分为分类算法,聚类算法和关联规则三大类,这…

数据挖掘十大经典算法,你都知道哪些?

当前时代大数据炙手可热&#xff0c;数据挖掘也是人人有所耳闻&#xff0c;但是关于数据挖掘更具体的算法&#xff0c;外行人了解的就少之甚少了。 数据挖掘主要分为分类算法&#xff0c;聚类算法和关联规则三大类&#xff0c;这三类基本上涵盖了目前商业市场对算法的所有需求…

Vim编辑器(二)

Vim编辑器&#xff08;二&#xff09; 一、Vim编辑器概述1、vi编辑器2、vi与Vim编辑器 二、Vim编辑器的三种模式&#xff08;重点&#xff09;1、三种模式2、三种模式之间的关系&#xff1a;3、Vim打开文件的四种方式 三、命令模式1、光标移动① 光标移动到行首与行尾② 翻屏③…

Vim编辑器使用

什么是vim? Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用。简单的来说&#xff0c; vi 是老式的字处理器&#xff0c;不过功能已经很齐全了&#xff0c;但是还是有可以进步的地方。 vim 则可以说…

Linux之vim编辑器的使用

目录 一、vim是什么&#xff1f; 试验1&#xff1a; 二.命令模式继承用法&#xff1a; vim命令模式的快捷键: 光标移动: vim文本复制相关操作: vim文本编辑操作: 三.末行模式命令用法 部分快捷键&#xff1a; 四.vim编辑器的配置原理 一、vim是什么&#xff1f; vi…