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));
    }
}
相关推荐
cpp_250124 分钟前
P2639 [USACO09OCT] Bessie‘s Weight Problem G
数据结构·算法·动态规划·题解·洛谷·背包dp
郝学胜-神的一滴33 分钟前
[力扣 227] 双栈妙解表达式计算:从思维逻辑到C++实战,吃透反向波兰式底层原理
java·前端·数据结构·c++·算法
LDG_AGI37 分钟前
【搜索引擎】Elasticsearch(六):向量搜索深度解析:从参数原理到混合查询实战
人工智能·深度学习·算法·elasticsearch·机器学习·搜索引擎
会编程的土豆39 分钟前
【数据结构与算法】二叉树深度
算法·深度优先
knight_9___1 小时前
RAG面试篇9
java·人工智能·python·算法·agent·rag
贾斯汀玛尔斯1 小时前
每天学一个算法--Top-K 查询(Top-K Retrieval)
算法
菜鸟丁小真1 小时前
LeetCode hot100 -131.分割回文串
数据结构·算法·leetcode·知识点总结
贾斯汀玛尔斯1 小时前
每天学一个算法--PageRank
算法
子琦啊1 小时前
【算法复习】滑动窗口(同向区间指针)
算法
啊我不会诶1 小时前
【自用复习】牛客每日一题2026.4.18 最大稳定数值
算法·深度优先