108. 将有序数组转换为二叉搜索树 --力扣 --JAVA

题目

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

解题思路

  1. 可以采用二分法,每次选数组中间值为根节点创建树,这样可以确保左右子树的高度差的绝对值不超过1;
  2. 通过递归来逐级生成后续节点;
  3. 可通过变量设置左右边界,方便后续节点区间的取值;

代码展示

java 复制代码
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        TreeNode data = toBST(nums, 0, nums.length - 1);
        return data;
    }
    public TreeNode toBST(int[] nums, int left, int right){
        if(left > right){
            return null;
        }
        int middle = (left + right) / 2;
        return new TreeNode(nums[middle], toBST(nums, left, middle - 1), toBST(nums, middle + 1, right));
    }
}
相关推荐
天赐学c语言14 分钟前
12.18 - 有效的括号 && C语言中static的作用
数据结构·c++·算法·leecode
季远迩20 分钟前
LeetCode 热题 100 Python3易懂题解(更新中)
算法·leetcode·哈希算法
CoovallyAIHub21 分钟前
从“模仿”到“进化”!华科&小米开源MindDrive:在线强化学习重塑「语言-动作」闭环驾驶
深度学习·算法·计算机视觉
xie_pin_an33 分钟前
C 语言排序算法全解析:从原理到实战,附性能对比
c语言·算法·排序算法
CoovallyAIHub35 分钟前
SAM 真的开始「分割一切」,从图像到声音,Meta 开源 SAM Audio
深度学习·算法·计算机视觉
Dream it possible!38 分钟前
LeetCode 面试经典 150_回溯_组合(99_77_C++_中等)
c++·leetcode·面试·回溯
三斗米38 分钟前
从思维链到思维树:一步步解锁大语言模型的推理能力
算法
前端小L1 小时前
贪心算法专题(二):波动中的智慧——只取极值「摆动序列」
数据结构·算法·贪心算法
aini_lovee1 小时前
基于Jousselme距离改进D-S证据理论matlab实现
开发语言·算法·matlab
白兰地空瓶1 小时前
你以为树只是画图?不——它是算法面试的“隐形主角”
前端·javascript·算法