E-108. Convert Sorted Array to Binary Search Tree
# O(n),O(n). 总体思路就是分治, 在初始nums找到中间点, 然后分为左右两个部分, 左边部分是左子树,
# 右边部分是右子树, 然后再在左右子树中进行同样的操作. 注意退出条件是右边界小于左边界
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
def helper(left, right):
mid = (right + left) // 2
# 下面这两行可有可无
# if right == left:
# return TreeNode(nums[mid])
if right < left:
return None
root = TreeNode(nums[mid])
root.left = helper(left, mid - 1)
root.right = helper(mid + 1, right)
return root
return helper(0,len(nums)-1)
Last updated
Was this helpful?