Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
要求高度平衡,那么应该尽量把元素往左右子树平均分配。正好又是有序数组,所以可以把数组分开,中间元素作为根,左边作为左子树,右边右子树。
public TreeNode sortedArrayToBST(int[] nums)
{
int len=nums.length;
if(len==0)
return null;
return build(0, len-1, nums);
}
private TreeNode build(int start,int end,int[] nums)
{
if(start==end)
return new TreeNode(nums[start]);
if(start>end)
return null;
int mid=(start+end)>>1;
int num=nums[mid];
TreeNode t=new TreeNode(num);
t.left=build(start, mid-1, nums);
t.right=build(mid+1, end, nums);
return t;
}