class Solution:
def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
if len(nums) == 0: #递归出口
return None
mid = len(nums) // 2 #数组长度为偶时,中点取偏右的
#mid = (0 + len(nums)-1)//2 #也可以取偏左的
root = TreeNode(nums[mid])
root.left = self.sortedArrayToBST(nums[:mid])
root.right = self.sortedArrayToBST(nums[mid+1:])
return root
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
def helper(low, high): #low,high为上下界
if low > high:
return
mid = low + (high-low)//2 #划分中点
root = TreeNode(nums[mid])
root.left = helper(low, mid-1)
root.right = helper(mid+1, high)
return root
return helper(0, len(nums)-1)