您现在的位置是:首页 > 编程 > 

将有序数组转换为二叉搜索树(C++)

2025-07-20 18:44:03
将有序数组转换为二叉搜索树(C++) 将有序数组转换为二叉搜索树给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:代码语言:javascript代码运行次数:0运行复制输入: nums = [-10,-,0,5,9] 输出: [0,-,9,-10

将有序数组转换为二叉搜索树(C++)

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

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

示例 1:

代码语言:javascript代码运行次数:0运行复制
输入: nums = [-10,-,0,5,9]
输出: [0,-,9,-10,null,5]
解释: [0,-10,5,null,-,null,9] 也将被视为正确答案:

示例 2:

代码语言:javascript代码运行次数:0运行复制
输入: nums = [1,]
输出: [,1]
解释: [1,null,] 和 [,1] 都是高度平衡二叉搜索树。

提示:

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

我的代码:

代码语言:javascript代码运行次数:0运行复制
/**
 * Definition for a binary tree node.
 * struct Treeode {
 *     int val;
 *     Treeode *left;
 *     Treeode *right;
 *     Treeode() : val(0), left(nullptr), right(nullptr) {}
 *     Treeode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     Treeode(int x, Treeode *left, Treeode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    Treeode* sortedArrayToBST(vector<int>& nums) {
        if (nums.size() == 0) return ULL;
        return convert(nums, 0, nums.size() - 1);
    }
    Treeode* convert(vector<int>& nums, int left, int right)
    {
        if (left > right) return ULL;
        int center = (left + right) / 2;
        Treeode* head = new Treeode(nums[center]); // 选择数组的中间值为根节点
        head->left = convert(nums, left, center - 1); // 构建左子树
        head->right = convert(nums, center + 1, right); // 构建右子树
        return head;
    }
};

对应我的掘金文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2022-10-19,如有侵权请联系 cloudcommunity@tencent 删除数组搜索c++二叉树int

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1160670.html

相关标签:无
上传时间: 2025-07-20 14:29:59
留言与评论(共有 17 条评论)
本站网友 kedouwo
28分钟前 发表
-10
本站网友 安庆儿童摄影
17分钟前 发表
9
本站网友 滑县租房
29分钟前 发表
left
本站网友 歌瑞尔官网
28分钟前 发表
] 和 [
本站网友 d3086
4分钟前 发表
-
本站网友 梳头方法
1分钟前 发表
val(x)
本站网友 帕玛氏
16分钟前 发表
] 输出: [
本站网友 1度电
21分钟前 发表
] 和 [
本站网友 莱芜电影院
11分钟前 发表
right(nullptr) {} * Treeode(int x)
本站网友 消费者网
13分钟前 发表
center + 1
本站网友 ups是什么东西
25分钟前 发表
right(nullptr) {} * Treeode(int x)
本站网友 面部湿疹
13分钟前 发表
] 和 [
本站网友 华英学校
17分钟前 发表
int left
本站网友 it学院
3分钟前 发表
0
本站网友 沈阳影讯
29分钟前 发表
1] 都是高度平衡二叉搜索树
本站网友 方琴
10分钟前 发表
int left