Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
這題展示了遞歸構(gòu)造一棵樹的方法。都說不要試圖用人腦跟蹤遞歸過程,這題確實很難跟蹤。但是不跟蹤怎么正向地寫出來呢焚虱。橙困。難道就憑感覺嗎哮兰,怎么驗證呢。肖抱。即便是{1,2,3}這樣的test case都是有些難用人腦去驗證的奋刽。
總之就是root變成了child瓦侮,又變成了root。佣谐。
注意遞歸的參數(shù)肚吏,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;
}
-