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;
    }
}
相关推荐
代码雕刻家18 小时前
2.4.蓝桥杯-分巧克力
算法·蓝桥杯
Ulyanov18 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
智者知已应修善业19 小时前
【查找字符最大下标以*符号分割以**结束】2024-12-24
c语言·c++·经验分享·笔记·算法
划破黑暗的第一缕曙光20 小时前
[数据结构]:5.二叉树链式结构的实现1
数据结构
91刘仁德20 小时前
c++类和对象(下)
c语言·jvm·c++·经验分享·笔记·算法
青桔柠薯片20 小时前
数据结构:单向链表,顺序栈和链式栈
数据结构·链表
diediedei20 小时前
模板编译期类型检查
开发语言·c++·算法
阿杰学AI20 小时前
AI核心知识78——大语言模型之CLM(简洁且通俗易懂版)
人工智能·算法·ai·语言模型·rag·clm·语境化语言模型
mmz120720 小时前
分治算法(c++)
c++·算法
XiaoFan01220 小时前
将有向工作流图转为结构树的实现
java·数据结构·决策树