力扣热门100题之将有序数组转为二叉搜索树

升序数组 转换成一棵**高度平衡二叉搜索树(AVL)**平衡定义:每个节点的左右子树高度差不超过 1。

为什么取中间?

  • 数组升序
  • 中间值作为根,左边一半都更小,右边一半都更大
  • 左右子树节点数量几乎一样 → 天然平衡

这一步是这道题的灵魂。

  • 用中间数字创建一个节点
  • 它就是当前区间的树根

有序数组转平衡 BST = 递归分治 + 每次取中点做根

  • 中点保证平衡
  • 左小右大保证 BST
  • 递归自动建好整棵树

完整代码实现:

java 复制代码
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return build(nums, 0, nums.length - 1);
    }
    private TreeNode build(int[] nums, int left, int right) {
        if (left > right) {
            return null;
        }

        int mid = (left + right) / 2; // 获取数组中点
        TreeNode root = new TreeNode(nums[mid]);

        root.left = build(nums, left, mid - 1);
        root.right = build(nums, mid + 1, right);

        return root;
    }
}
相关推荐
天若有情6738 小时前
Python精神折磨系列(完整11集·无断层版)
数据库·python·算法
凌波粒8 小时前
LeetCode--383.赎金信(哈希表)
java·算法·leetcode·散列表
xiaoye-duck8 小时前
《算法题讲解指南:动态规划算法--子数组系列》--23.等差数列划分,24.最长湍流子数组
c++·算法·动态规划
派大星~课堂8 小时前
【力扣-141. 环形链表 ✨】Python笔记
笔记·leetcode·链表
小O的算法实验室8 小时前
2026年SEVC,高密度仓库中结合任务分配的多AGV无冲突调度框架,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
abant28 小时前
leetcode 108 有序数组转平衡二叉树
算法·leetcode·职场和发展
汀、人工智能9 小时前
[特殊字符] 第7课:移动零
数据结构·算法·数据库架构·图论·bfs·移动零
计算机安禾9 小时前
【数据结构与算法】第25篇:静态查找(一):顺序查找与折半查找
java·开发语言·数据结构·学习·算法·visual studio code·visual studio
B1acktion9 小时前
2.7.希尔排序——让插入排序先大步走,再小步收尾
c++·算法·排序算法