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

一、题目

给定一个整数数组nums,其中元素按升序排列,转换为一个平衡二叉搜索树。

二、思路

1、二叉搜索树的特性是左子树 < 根节点 < 右子树,对于升序数组,选择数组的中间节点作为根节点,左半部分构造左子树,右半部分构造右子树。

2、递归终止条件left > right,左子树范围:[left, mid - 1]右子树范围:[mid + 1, right]

三、代码

复制代码
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        int left = 0, right = nums.length-1;
        TreeNode root = sort(nums,left,right);
        return root;
    }
    private TreeNode sort(int[] nums,int left,int right){
        if(left > right) return null;
        int mid = left + (right - left) / 2;
        TreeNode node = new TreeNode(nums[mid]);
        node.left = sort(nums,left,mid-1);
        node.right = sort(nums,mid+1,right);
        return node;
    }
}
相关推荐
wang09077 分钟前
硬着头皮学数据结构和算法之Myers算法
数据结构·算法
蓝悦无人机19 分钟前
无人机系列之飞控算法:从PID到AI,飞行控制的核心进化
人工智能·算法·无人机·飞控系统
憨波个21 分钟前
【说话人日志】DiariZen
人工智能·深度学习·算法·语音识别
用户73416810354823 分钟前
被忽视的输入:为什么变工况故障诊断需要引入控制回路信号?
算法
垆边人似月.35 分钟前
华为机试题 :最长递增子序列题目
数据结构·c++·算法·华为
动词ing1 小时前
【题目练习】算法 组合总和
算法
程序员-Benothing1 小时前
Linux文本排序统计命令:sort、uniq、wc、cut、tr实战
java·开发语言·算法
开发者联盟league1 小时前
c++11 使用chrono库转换时间点和字符串,计算时间点间隔
java·c++·算法
老歌老听老掉牙2 小时前
两个平面旋转平移坐标系间的坐标变换关系
python·算法·平面·旋转·平移
W.A委员会2 小时前
PID与PID整定
python·算法