# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def constructMaximumBinaryTree(self, nums, start=None, end=None):
        """
        :type nums: List[int]
        :rtype: TreeNode
        """
        if start is None and end is None:
            start, end = 0, len(nums)
        if start == end:
            return None
        m, mi = nums[start], start
        for i in xrange(start, end):
            if nums[i] > m:
                m, mi = nums[i], i
        ret = TreeNode(m)
        ret.left = self.constructMaximumBinaryTree(nums, start, mi)
        ret.right = self.constructMaximumBinaryTree(nums, mi + 1, end)
        return ret

Add py solution for 654. Maximum Binary Tree
Add py solution for 654. Maximum Binary Tree

654. Maximum Binary Tree: https://leetcode.com/problems/maximum-binary-tree/

    Approach 1:
    1. Modify the method to accept (nums, start, end), and the method
    will return the subtree of nums[start:end]
    2. Find the maximum and split the array into left, right part
    3. Recursively generate the left/right subtree using the same method
    with start/end specified
    4. Return the TreeNode with the val of the maximum value
