Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
此题将一个已排序数组转换为平衡二叉搜索树,典型的递归题目。每次得到数组的中间元素,作为根节点root,中间元素之前的数组部分作为root的左子树,中间元素之后的数组部分作为root的右子树,即可。代码如下:
public class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if(nums.length>0){
int medium=nums.length/2;
TreeNode node=new TreeNode(nums[medium]);
int[] leftNums=new int[medium];
leftNums=Arrays.copyOfRange(nums,0,medium);
node.left=sortedArrayToBST(leftNums);
if(medium+1<nums.length){
int[] rightNums=new int[nums.length-1-medium];
rightNums=Arrays.copyOfRange(nums,medium+1,nums.length);
System.out.println(rightNums[0]);
node.right=sortedArrayToBST(rightNums);
}
return node;
}
return null;
}
}