class Solution:
def find_max(self, nums, lo, hi) -> int:
max_element = nums[lo]
max_index = lo
for i in range(lo, hi):
if max_element < nums[i]:
max_index = i
max_element = nums[i]
return max_index
def constructMaximumBinaryTree(self, nums: List[int]) -> Optional[TreeNode]:
def recursion(lo: int, hi: int):
if lo < hi:
maxi = self.find_max(nums, lo, hi)
node = TreeNode(val=nums[maxi])
node.left = recursion(lo, maxi)
node.right = recursion(maxi + 1, hi)
return node
return recursion(0, len(nums))