Given a sorted (increasing order) array, Convert it to create a binary
tree with minimal height. Notice There may exist multiple valid
solutions, return any of them.node
Time Complexity
O(N)
Space Complexity
O(logn)ide
根據Binary Search Tree的性質,問題轉化爲找一個sorted array裏的中位數,用一個helper函數,divide and conquer一路找中點,再經過前序遍歷的方法把tree build起來函數
public TreeNode sortedArrayToBST(int[] A) { // write your code here //corner case if(A == null || A.length == 0) return null; return helper(A, 0, A.length - 1); } private TreeNode helper(int[] A, int left, int right){ //base case //preorder if(left > right) return null; int mid = left + (right - left)/2; TreeNode node = new TreeNode(A[mid]); node.left = helper(A, left, mid - 1); node.right = helper(A, mid + 1, right); return node; }