将有序数组——>二叉搜索树

news/2024/9/20 2:25:40 标签: 算法, 数据结构, javascript

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

中间位置为根节点

/**
 * 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* sortedArrayToBST(vector<int>& nums) 
    {
        return _sortedArrayToBST(nums,0,nums.size()-1);
    }
    TreeNode*_sortedArrayToBST(vector<int>& nums,int left,int right)
    {
        if(left>right)
        {
            return nullptr;
        }

        int mid=(left+right)/2;

        TreeNode* root =new TreeNode(nums[mid]);
        root->left=_sortedArrayToBST(nums,left,mid-1);
        root->right=_sortedArrayToBST(nums,mid+1,right);
        return root;
    }
};


http://www.niftyadmin.cn/n/5666473.html

相关文章

简单题28-找出字符传中第一个匹配项的下标(Java and Python)20240918

问题描述&#xff1a; Java代码&#xff1a; class Solution {public int strStr(String haystack, String needle) {int n1 haystack.length();int n2 needle.length();if (n2 0) {return 0; // 如果 needle 为空字符串&#xff0c;直接返回 0}if (n1 < n2) {return -…

C++标准的一些特性记录:C++11的thread_local

文章目录 thread_localthread_local 在多线程的编程环境里,一般来说,所有的线程都是共享同一个内存空间,也就是说如果定义一个变量,这个变量是被所有线程共享的,所以多个变量在访问同一个变量时,是需要加锁机制的,否则就会出现问题。 在C++11中,引入了一个关键字thre…

2024年电脑监控软件大盘点:五大好用监控电脑软件推荐

随着远程办公和混合工作模式成为新常态&#xff0c;电脑监控软件变得越来越重要。 不管你是企业老板&#xff0c;还是需要管理远程团队的领导&#xff0c;或者是担心数据安全的IT管理员&#xff0c;找到一款好用的电脑监控软件都至关重要。 为了帮助大家少走弯路&#xff0c;今…

基于SpringBoot+Vue的企业会议室预定管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

#if等命令的学习

预处理命令 #include&#xff08;文件包含命令&#xff09; #define&#xff08;宏定义命令&#xff09; #undef #if&#xff08;条件编译&#xff09; #ifdef #ifndef #elif #endif defined函数&#xff08;与if等结合使用&#xff09; 下面将解释上述各自的用法、使用…

教师专属:高效查询学生考试成绩系统 - 立即体验吧

以往的教学模式&#xff0c;通常老师们发布学生成绩查询的方式往往繁琐且非常耗时。需要老师手动整理成绩表格&#xff0c;然后通过邮件、短信或张贴纸质成绩单的形式分发给学生和家长&#xff0c;给老师们带来了不小的负担。 所以我特别推荐老师们尝试使用易查分小程序来发布…

SpringBoot开发——整合Apache POI轻松生成精美的Excel报表

文章目录 1、准备工作2、编写代码2.1 创建实体类2.2 创建Excel生成服务2.3 创建控制器 3、测试4、结论 在许多企业应用程序中&#xff0c;导出数据到Excel表格是一项常见的需求。Spring Boot提供了许多库来简化这个过程&#xff0c;其中包括Apache POI和Spring Boot的相关模块。…

C++:布尔类型,引用,堆区空间

1.布尔类型 #include <iostream>using namespace std;int main() {bool b13;bool b20;cout << "b1" <<b1<< endl;cout << "b2" <<b2<< endl;cout <<boolalpha<< "b1" <<b1<<…