# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = NoneclassSolution:defsortedArrayToBST(self,nums:List[int])->TreeNode:defdfs(l:int,r:int)->TreeNode:ifl>r:returnNonemid=(l+r)>>1returnTreeNode(nums[mid],dfs(l,mid-1),dfs(mid+1,r))returndfs(0,len(nums)-1)
1 2 3 4 5 6 7 8 910111213141516171819202122232425
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */classSolution{privateint[]nums;publicTreeNodesortedArrayToBST(int[]nums){this.nums=nums;returndfs(0,nums.length-1);}privateTreeNodedfs(intl,intr){if(l>r){returnnull;}intmid=(l+r)>>1;returnnewTreeNode(nums[mid],dfs(l,mid-1),dfs(mid+1,r));}}
1 2 3 4 5 6 7 8 910111213141516171819202122
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */classSolution{public:TreeNode*sortedArrayToBST(vector<int>&nums){autodfs=[&](thisauto&&dfs,intl,intr)->TreeNode*{if(l>r){returnnullptr;}intmid=l+r>>1;returnnewTreeNode(nums[mid],dfs(l,mid-1),dfs(mid+1,r));};returndfs(0,nums.size()-1);}};
1 2 3 4 5 6 7 8 91011121314151617181920
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */funcsortedArrayToBST(nums[]int)*TreeNode{vardfsfunc(int,int)*TreeNodedfs=func(l,rint)*TreeNode{ifl>r{returnnil}mid:=(l+r)>>1return&TreeNode{nums[mid],dfs(l,mid-1),dfs(mid+1,r)}}returndfs(0,len(nums)-1)}