给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:
创建一个根节点,其值为 nums 中的最大值。
递归地在最大值 左边 的 子数组前缀上 构建左子树。
递归地在最大值 右边 的 子数组后缀上 构建右子树。
返回 nums 构建的 最大二叉树 。
解题思路:
最大值拆分左右子列表
然后递归到列表只有一个元素即可return
# 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 constructMaximumBinaryTree(self, nums: List[int]) -> Optional[TreeNode]:
if not nums:
return None
MaxValue = max(nums)
position = nums.index(MaxValue)
node = TreeNode(val = MaxValue)
node.left = self.constructMaximumBinaryTree(nums[:position])
node.right = self.constructMaximumBinaryTree(nums[position+1:])
return node