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;
    }
相关推荐
cxr8281 分钟前
控制理论基础
人工智能·算法
平平淡淡才是true15 分钟前
偏序关系、哈斯图、最长链长度、最长链条数
算法
小钊(求职中)19 分钟前
算法知识、常用方法总结
java·算法·排序算法·力扣
paeamecium24 分钟前
【PAT甲级真题】- Talent and Virtue (25)
数据结构·c++·算法·pat
Mr_Xuhhh30 分钟前
蓝桥杯复习清单真题(C++版本)
c++·算法·蓝桥杯
tankeven31 分钟前
HJ163 时津风的资源收集
c++·算法
Boop_wu41 分钟前
[Java 算法] 动态规划(4)
数据结构·算法·leetcode
旖-旎43 分钟前
分治(计算右侧小于当前元素的个数)(7)
c++·学习·算法·leetcode·排序算法·归并排序
cxr8281 小时前
细胞球运动追踪的卡尔曼滤波与力场插值算法 —— 活体内微米级颗粒实时定位与轨迹预测系统
算法
炘爚1 小时前
C++(流类:istream /ostream/istringstream /ostringstream)
开发语言·c++·算法