【每天学习一点算法 2025/12/22】将有序数组转换为二叉搜索树

每天学习一点算法 2025/12/22

题目:将有序数组转换为二叉搜索树

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

前几天才做了验证二叉搜索树,我们知道严格递增的有序数组,恰好是对应平衡二叉搜索树(BST)的中序遍历结果,那么根节点的值就是这个数组中间的那个数字,子树的根节点又是数组根节点值(也就是中间的值)处分割开后两边数组的中间值,那么我们可以递归生成子树的根节点从而生成完整的二叉搜索树。

typescript 复制代码
function sortedArrayToBST(nums: number[]): TreeNode | null {
  // 辅助函数:递归构建BST
  function auxiliaryFun(nums: number[], start: number, end: number): TreeNode | null {
    // 递归终止条件:区间无效
    if (start > end) return null;

    // 取左中位数,也可以取右中位数
    const mid = start + Math.floor((end + start) / 2);

    // 以中位数为根节点
    const root = new TreeNode(nums[mid]);
    // 递归构建左子树(左区间)
    root.left = auxiliaryFun(nums, start, mid - 1);
    // 递归构建右子树(右区间)
    root.right = auxiliaryFun(nums, mid + 1, end);
    
    return root;
  }

  // 初始调用:整个数组区间 [0, nums.length-1]
  return auxiliaryFun(nums, 0, nums.length - 1);
}

题目来源:力扣(LeetCode)

相关推荐
开开心心_Every16 小时前
安卓做菜APP:家常菜谱详细步骤无广简洁
服务器·前端·python·学习·edge·django·powerpoint
知乎的哥廷根数学学派16 小时前
基于物理信息嵌入与多维度约束的深度学习地基承载力智能预测与可解释性评估算法(以模拟信号为例,Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习
wdfk_prog16 小时前
WIN11如何可以安装ISO
linux·笔记·学习
古城小栈16 小时前
Rust 丰富&好用的 格式化语法
前端·算法·rust
Darkershadow16 小时前
蓝牙学习之Provision(2)
学习·蓝牙·ble·mesh
AuroraWanderll16 小时前
类和对象(六)--友元、内部类与再次理解类和对象
c语言·数据结构·c++·算法·stl
leaves falling16 小时前
c语言-给定两个数,求这两个数的最大公约数
数据结构·算法
SamtecChina202316 小时前
Electronica现场演示 | 严苛环境下的56G互连
大数据·网络·人工智能·算法·计算机外设
Tim_1016 小时前
【C++入门】05、复合类型-数组
开发语言·c++·算法