108_将有序数组转换为二叉搜索树[EASY]
约 304 字大约 1 分钟
2026-03-22
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。
示例 1: 
输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:
示例 2: 
输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。解题思路
核心知识:二叉搜索树的中序遍历序列是升序的。
每次选取数组的中点作为 root,然后递归地,对左半边也选取中点作为 root,对右半边也是,直到 left > right
Java实现
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 - left)/2;
// 选取数组中点为 root,创建节点
TreeNode node = new TreeNode(nums[mid]);
// 对左半边,右半边也如法炮制
node.left = build(nums, left, mid-1);
node.right = build(nums, mid+1, right);
return node;
}