思路:(和前两道题很像)
递归出口:当传入数组为空时,返回空
单层递归逻辑:
- 找出数组中的最大值,构建一个树节点
- 将数组进行切分,调用递归函数
class Solution(object):
def constructMaximumBinaryTree(self, nums):
if len(nums)==0:
return
maxval=max(nums)
node=TreeNode(val=maxval)
index=nums.index(maxval)
node.left=self.constructMaximumBinaryTree(nums[:index])
node.right=self.constructMaximumBinaryTree(nums[index+1:])
return node