/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode sortedArrayToBST(int[] num) {
// Start typing your Java solution below
// DO NOT write main() function
return buildBST(num,0,num.length -1);
}
public TreeNode buildBST(int[] num, int start, int end){
if(start > end)
return null;
int median = start + (end - start) /2 ;
TreeNode root = new TreeNode(num[median]) ;
root.left = buildBST(num,start,median -1);// remember here median is gone, so median -1
root.right = buildBST(num,median +1 , end);
return root;
}
}