- 新建结点,并找到数组的中间元素
- 将中间元素左边的所有元素用来构建左子树
- 将右边的所有元素用来构建右子树
public TreeNode sortedArrayToBST(int[] nums) {
return fun(nums, 0, nums.length-1);
}
public TreeNode fun(int[] nums, int left, int right) {
if(left > right) {
return null;
}
int mid = left + (right - left) / 2;
TreeNode t = new TreeNode(nums[mid]);
t.left = fun(nums, left, mid-1);
t.right = fun(nums, mid+1, right);
return t;
}
最左侧元素坐标为 a,最右侧元素坐标 b,中间元素坐标是:(a + b) / 2。
左边元素的坐标范围是:a, mid-1,右侧元素坐标范围是:mid+1, b。
如果 a == b 说明还有一个元素,如果 a > b 说明应该直接返回了。