class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size()<=0) return NULL;
return sortedArrayToBST(nums,0,nums.size()-1);
}
TreeNode* sortedArrayToBST(vector<int>& nums,int left,int right) {
if(left>right) return NULL;
TreeNode* root = new TreeNode(0);
int pos = left + (right - left)/2;
root->val = nums[pos];
root->left = sortedArrayToBST(nums,left,pos-1);
root->right = sortedArrayToBST(nums,pos+1,right);
return root;
}
};
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size()<=0) return NULL;
return sortedArrayToBST(nums,0,nums.size()-1);
}
TreeNode* sortedArrayToBST(vector<int>& nums,int left,int right) {
if(left>right) return NULL;
TreeNode* root = new TreeNode(0);
int pos = left + (right - left)/2;
root->val = nums[pos];
root->left = sortedArrayToBST(nums,left,pos-1);
root->right = sortedArrayToBST(nums,pos+1,right);
return root;
}
};