108. 将有序数组转换为二叉搜索树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
# optional[ arg ] 这个参数除了给定的默认值外还可以是None
# 每次从中间 截断,差不多 会出现一个平衡的 bst。
def build_tree(list_,left,right) -> Optional[TreeNode]:
# 基线条件
if left > right: # left==right时,有一个结点,还是要返回的。
return None
mid = (left+right)>>1
root = TreeNode(list_[mid])
root.left = build_tree(list_,left,mid-1)
root.right = build_tree(list_,mid+1,right)
return root
return build_tree(nums,0,len(nums)-1)