Leetcode 654
题目:最大二叉树
学习资料:代码随想录
实现过程
- 利用最大值来进行分割;递归的思想前序构造
- 注意如果分割结果长度为0,则无需传入了
def constructMaximumBinaryTree(self, nums: List[int]) -> Optional[TreeNode]:
def trace(nums):
if len(nums) == 1:
node = TreeNode(nums[0])
return node
rootvalue = max(nums)
ind = nums.index(rootvalue)
root = TreeNode(rootvalue)
left, right = nums[:ind], nums[ind+1:]
if len(left):
root.left = trace(left)
if len(right):
root.right = trace(right)
return root
return trace(nums)