Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
这题展示了递归构造一棵树的方法。都说不要试图用人脑跟踪递归过程,这题确实很难跟踪。但是不跟踪怎么正向地写出来呢。。难道就凭感觉吗,怎么验证呢。。即便是{1,2,3}这样的test case都是有些难用人脑去验证的。
总之就是root变成了child,又变成了root。。
注意递归的参数,left和right,以及return的条件。
至于child是怎么一层层接到root上的?这里的递归是每次都先生成root,然后去找left,right;
注意,最后的那句``` return root;
public TreeNode sortedArrayToBST(int[] nums) {
return recursion(nums, 0, nums.length - 1);
}
//mention the parameters
private TreeNode recursion(int nums[], int left, int right) {
if (left > right) return null;
int mid = (left + right) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = recursion(nums, left, mid - 1);
root.right = recursion(nums, mid + 1, right);
return root;
}
-