力扣热门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;
    }
}
相关推荐
QN1幻化引擎1 小时前
Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
人工智能·算法·机器学习
Rainy Blue8831 小时前
C转C++速成
c语言·c++·算法
txzrxz2 小时前
二分图详解
数据结构·c++·算法·图论·深度优先搜索·二分图染色
gaosushexiangji2 小时前
数字图像相关DIC系统在结构振动模态测量中的应用
算法
KaMeidebaby2 小时前
卡梅德生物技术快报|如何制备单克隆抗体:小众禽类靶点单抗制备实操流程:双载体抗原交叉筛选完整工艺记录
人工智能·python·深度学习·算法·机器学习
北域码匠3 小时前
Karatsuba乘法超详细解析(原理+流程+性能分析+纯原生C#无第三方库完整实现)
算法·c#·大数乘法·高精度计算·数据结构与算法·分治算法·karatsuba 乘法
fpcc4 小时前
数据结构和算法—数学的应用
数据结构·c++·算法
皓月斯语4 小时前
B4451 [GESP202512 四级] 建造 题解
数据结构·c++·算法·题解
z小猫不吃鱼4 小时前
模型剪枝经典论文精读:DepGraph: Towards Any Structural Pruning
算法·机器学习·剪枝
Ulyanov5 小时前
Python实现6-DOF刚体仿真器(下)——环境扰动与控制闭环
开发语言·python·算法·系统仿真·雷达电子对抗·导引头