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

思路

将有序数组转换为平衡二叉搜索树。递归方法,每次选取数组中间元素作为根节点,左侧子数组构建左子树,右侧子数组构建右子树。不断二分数组确保树的高度平衡,时间复杂度为O(n)。

代码

cpp 复制代码
class Solution {
private:
    TreeNode* traversal(vector<int>& nums,int l, int r) {
        if(l>r) return nullptr;
        int m=l+((r-l)/2);
        TreeNode* rr=new TreeNode(nums[m]);
        rr->left=traversal(nums,l,m-1);
        rr->right=traversal(nums,m+1,r);
        return rr;
    }
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        TreeNode* r=traversal(nums,0,nums.size()-1);
        return r;
    }
相关推荐
黎阳之光18 分钟前
黎阳之光透明管理:视频孪生重构智慧仓储新范式
人工智能·算法·安全·重构·数字孪生
6Hzlia34 分钟前
【Hot 100 刷题计划】 LeetCode 199. 二叉树的右视图 | C++ DFS 逆序遍历
c++·leetcode·深度优先
CappuccinoRose1 小时前
回溯法 - 软考备战(四十三)
算法·排列组合·路径·n皇后·子集·解数独·岛屿
AC赳赳老秦1 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Robot_Nav2 小时前
Shape-Aware MPPI(SA MPPI)算法:基于RC-ESDF的任意形状机器人实时轨迹优化
算法·机器人·sa-mppi
gumichef2 小时前
算法的时间复杂度和空间复杂度
数据结构
踩坑记录3 小时前
leetcode hot100 118. 杨辉三角 easy 动态规划
leetcode·动态规划
小O的算法实验室3 小时前
2026年ESWA,自适应基于排序的协同进化学习粒子群算法+边缘计算服务器部署,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
cpp_25013 小时前
P1832 A+B Problem(再升级)
数据结构·c++·算法·动态规划·题解·洛谷·背包dp
꧁细听勿语情꧂4 小时前
合并两个有序表、判断链表的回文结构、相交链表、环的链表一和二
c语言·开发语言·数据结构·算法