代码随想录算法训练营第二十天-二叉树-108.将有序数组转换为二叉搜索树

  • 构造的关键点就是找到树的根结点
  • 每个子树也是找其的根结点
  • 注意如果构造一个线性二叉树也是搜索树,但不符合题意
cpp 复制代码
#include <iostream>
#include <vector>

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(): val(0), left(nullptr), right(nullptr) {}
    TreeNode(int v): val(v), left(nullptr), right(nullptr) {}
    TreeNode(int v, TreeNode* l, TreeNode* r): val(v), left(l), right(r) {}
};

class Solution {
private:
    TreeNode* traversal(std::vector<int>& nums, int left, int right) {
        if (left > right)
            return nullptr;
        int mid = (left + right) / 2;
        TreeNode* root = new TreeNode(nums.at(mid));
        root->left = traversal(nums, left, mid - 1);
        root->right = traversal(nums, mid + 1, right);
        return root;
    }
public:
    TreeNode* sortedArrayToBST(std::vector<int>& nums) {
        return traversal(nums, 0, nums.size() - 1);
    }
};
int main()
{
    Solution s;
    return 0;
}
相关推荐
源代码•宸3 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
旖旎夜光3 小时前
多态(11)(下)
c++·学习
yongui478343 小时前
MATLAB的指纹识别系统实现
算法
高山上有一只小老虎3 小时前
翻之矩阵中的行
java·算法
yangpipi-3 小时前
《C++并发编程实战》 第4章 并发操作的同步
开发语言·c++
jghhh013 小时前
RINEX文件进行卫星导航解算
算法
Chance_to_win4 小时前
C++基础知识
c++
爱思德学术4 小时前
中国计算机学会(CCF)推荐学术会议-A(计算机科学理论):LICS 2026
算法·计算机理论·计算机逻辑
CVHub4 小时前
多模态图文训推一体化平台 X-AnyLabeling 3.0 版本正式发布!首次支持远程模型推理服务,并新增 Qwen3-VL 等多款主流模型及诸多功能特性,等
算法
有趣的我4 小时前
C++ 多态介绍
开发语言·c++