题目:给你一个整数数组 nums
,其中元素已经按 升序 排列,请你将其转换为一棵
平衡二叉搜索树。
给定一个有序的整数数组,我们需要构建一棵平衡的二叉搜索树。平衡二叉树是指任意一个节点的左右子树的高度差不超过1。
由于给定的数组是有序的,可以利用这个特性来构建二叉搜索树。可以选择数组中间的元素作为根节点,然后递归地构建左子树和右子树。
public class no_108 {
public static void main(String[] args) {
int[] arr = {-10, -3, 0, 5, 9};
TreeNode treeNode = sortedArrayToBST(arr);
}
public static TreeNode sortedArrayToBST(int[] nums) {
return buildTree(nums, 0, nums.length - 1);
}
public static TreeNode buildTree(int[] nums, int left, int right) {
if (left > right) return null;
int mid = left + (right - left) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = buildTree(nums, left, mid - 1);
root.right = buildTree(nums, mid + 1, right);
return root;
}
}
利用有序数组的特点,将树构建出来。