The Problem can be seen in Convert Sorted Array to Binary Search Tree,the analysis is shown in the following.
A given array named as nums (like [-10,-3,0,5,9]) is sorted in ascending order.
constructing procedure:
root, array[0:5], mid = (len(nums)-1)//2=2
left, array[0:2], mid=0
left, array=null
right, array=array[1:2], mid=1
left, array=null
right, array=null
right, array[3:5], mid=3
left, array=null
right, array[4:5], mid=4
left, array=null
right, array=null
Using recursion method can implements the constructing procedure above.
class Solution:
def sortedArrayToBST(self, nums: 'List[int]') -> 'TreeNode':
if len(nums) == 0 or not nums:
return None
mid = (len(nums)-1)//2
root = TreeNode(nums[mid])
root.left = self.sortedArrayToBST(nums[:mid])
root.right = self.sortedArrayToBST(nums[mid+1:])
return root