Leetcode 654 Maximum Binary Tree
 Create a root node whose value is the maximum value in nums.
 Recursively build the left subtree on the subarray prefix to the left of the maximum value.
 Recursively build the right subtree on the subarray suffix to the right of the maximum value. Return the maximum binary tree built from nums.
Input: nums = [3,2,1,6,0,5]
Output: [6,3,5,null,2,0,null,null,1]
Explanation: The recursive calls are as follow:
 The largest value in [3,2,1,6,0,5] is 6. Left prefix is [3,2,1] and right suffix is [0,5].
 The largest value in [3,2,1] is 3. Left prefix is [] and right suffix is [2,1].
 Empty array, so no child.
 The largest value in [2,1] is 2. Left prefix is [] and right suffix is [1].
 Empty array, so no child.
 Only one element, so child is a node with value 1.
 The largest value in [0,5] is 5. Left prefix is [0] and right suffix is [].
 Only one element, so child is a node with value 0.
 Empty array, so no child.
Input: nums = [3,2,1]
Output: [3,null,2,null,1]

Using DFS to recursively get the sublist which contains the numbers that represented node values for left substree. Convert the maximum value of current list be the root node of subtree. Then the left parts of list that exclusice the maximum value will constructed as left substree of the current root. And the right parts of list that exclusice the maximum value will constructed as right substree of the current root.

Conditions

If there is no value in the list, which means there are no more nodes to construct the subtree, terminate the current recursion. After done the recursion, return the root node of the tree
def constructMaximumBinaryTree(self, nums: List[int]) > TreeNode:
if not nums:return
mx = max(nums)
index=nums.index(mx)
root = TreeNode(mx)
root.left = self.constructMaximumBinaryTree(nums[:index])
root.right = self.constructMaximumBinaryTree(nums[index+1:])
return root