本题需要构造一颗高度平衡的二叉搜索树,每次都把数组中间位置的数选作跟节点,自然而然会构造出平衡的二叉树。
本题和根据前序中序构造二叉搜索树和根据中序后序二叉搜索树是相同的道理。
前序中序和中序后序构建二叉树
递归寻找数组中间位置的数,然后将它作为根节点,再递归遍历数组左边的数和右边的数。
public TreeNode sortedArrayToBST(int[] nums) {
if(nums.length == 0 || nums==null) return null;
int mid = nums.length/2;
TreeNode root = new TreeNode(nums[mid]);
root.left = sortedArrayToBST(Arrays.copyOfRange(nums,0,mid));
root.right = sortedArrayToBST(Arrays.copyOfRange(nums,mid+1,nums.length));
return root;
}