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));
    }
}
相关推荐
青梅橘子皮5 分钟前
STL---map/set... “家族“详解(从使用到底层)(1)
数据结构·算法
让学习成为一种生活方式12 分钟前
DNA 甲基化综述(模式、调控与功能)--Current Opinion in Plant Biology
算法
-森屿安年-1 小时前
647. 回文子串
c++·算法·动态规划
皓月斯语1 小时前
P5736 【深基7.例2】质数筛
c++·算法·题解
极序时代GEO品牌优化2 小时前
杭州极序时代|面向地域、设备与用户画像的动态GEO
人工智能·python·算法·极序时代geo
啦啦啦啦啦zzzz3 小时前
贪心算法和动态规划
c++·算法·贪心算法·动态规划
雪碧聊技术3 小时前
力扣 72. 编辑距离——动态规划经典例题
算法·leetcode·动态规划
happyprince3 小时前
篇3:bitsandbytes-深刻观-哲学与升华
人工智能·算法
应用市场3 小时前
红绿灯背后的算法:从 Webster 配时到 Max-Pressure 与强化学习
算法
木井巳3 小时前
【DFS解决floodfill算法】岛屿的最大面积
java·算法·leetcode·深度优先