java
class Solution {
private TreeNode dfs(int [] nums, int left,int right){
if(left>right) return null;
int mid=left+(right-left)/2;
TreeNode root=new TreeNode(nums[mid]);
root.left=dfs(nums,left,mid-1);
root.right=dfs(nums,mid+1,right);
return root;
}
public TreeNode sortedArrayToBST(int[] nums) {
return dfs(nums,0,nums.length-1);
}
}
python
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
def dfs(nums,l,r):
if l>r:
return
mid=l+(r-l)//2
root=TreeNode(nums[mid])
root.left=dfs(nums,l,mid-1)
root.right=dfs(nums,mid+1,r)
return root
return dfs(nums,0,len(nums)-1)
c++
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode (int x):val(x),left(NULL),right(NULL){}
};
class Solution {
public:
TreeNode * dfs(vector<int>&nums,int left,int right){
if(left>right) return nullptr;
int mid=left+((right-left)>>1);
TreeNode * root=new TreeNode(nums[mid]);
root->left=dfs(nums,left,mid-1);
root->right=dfs(nums,mid+1,right);
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
return dfs(nums,0,nums.size()-1);
}
};