题目描述:
题解:递归
1.递归终止条件:输入nums为空,返回None
2.递归返回值:构造完成的root
3.当前次递归需要完成:
<1>从输入的nums找到最大值作为root.val
<2>将最大值之前的nums元素构造root.left
<3>将最大值之后的nums元素构造root.right
class Solution(object): def constructMaximumBinaryTree(self, nums): if len(nums)==0: return None rootval = max(nums) idx = nums.index(rootval) leftnums = nums[:idx] rightnums = nums[idx+1:] root = TreeNode(val=rootval) root.left = self.constructMaximumBinaryTree(leftnums) root.right = self.constructMaximumBinaryTree(rightnums) return root