将有序数组转换为二叉搜索树
2026年4月11日大约 1 分钟
将有序数组转换为二叉搜索树
使用的方法
递归
解题思路
- 给定一个有序数组,我们需要将其转换为一棵高度平衡的二叉搜索树。高度平衡的二叉搜索树是指每个节点的左右子树的高度差不超过1。
- 由于数组是有序的,我们可以选择数组的中间元素作为树的根节点,这样可以保证左右子树的高度尽可能平衡。
- 递归地对左半部分数组构建左子树,对右半部分数组构建右子树。
- 递归的终止条件是当左边界大于右边界时,返回 null,表示当前子树为空。
代码实现
/**
* Definition for a binary tree node.
* 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;
* }
* }
*/
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
TreeNode res = bfs(nums,0,nums.length-1);
return res;
}
public TreeNode bfs(int[] nums,int left,int right){
if(left > right)
return null;
int mid = (left + right) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = bfs(nums,left,mid-1);
root.right = bfs(nums,mid+1,right);
return root;
}
}