07有序数组转换为二叉搜索树

有序数组转换为二叉搜索树

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

示例 1:

img

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

示例 2:

img

输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3][3,1] 都是高度平衡二叉搜索树。

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums严格递增 顺序排列
public class TreeNode {
  int val;
  TreeNode left;
  TreeNode right;
  TreeNode() {}
  TreeNode(int val) { this.val = val; }
  TreeNode(int val, TreeNode left, TreeNode right) {
    this.val = val;
    this.left = left;
    this.right = right;
  }
}
public TreeNode sortedArrayToBST(int[] nums) {
  return recur(nums,0,nums.length-1);
}

private TreeNode recur(int[] arr,int l , int r){
  if(l>r) return null;
  if(l==r){
    return new TreeNode(arr[l]);
  }
  // 0,1,2,3
  int mid = (l+r)/2;
  TreeNode nodeL = recur(arr, l, mid-1);
  TreeNode nodeR = recur(arr, mid + 1, r);
  return new TreeNode(arr[mid],nodeL,nodeR);
}

07有序数组转换为二叉搜索树
https://jiajun.xyz/2026/02/08/算法/08二叉树/07有序数组转换为二叉搜索树/
作者
Lambda
发布于
2026年2月8日
许可协议