| # Definition for a binary tree node. | |||||
| class TreeNode: | |||||
| def __init__(self, x): | |||||
| self.val = x | |||||
| self.left = None | |||||
| self.right = None | |||||
| class Solution: | |||||
| def constructMaximumBinaryTree(self, nums): | |||||
| if len(nums) == 0: | |||||
| return None | |||||
| elif len(nums) == 1: | |||||
| return TreeNode(nums[0]) | |||||
| else: | |||||
| max = -1 | |||||
| maxIndex = -1 | |||||
| for x in range(len(nums)): | |||||
| if nums[x] > max: | |||||
| max = nums[x] | |||||
| maxIndex = x | |||||
| root = TreeNode(max) | |||||
| root.left = self.constructMaximumBinaryTree(nums[0:maxIndex]) | |||||
| root.right = self.constructMaximumBinaryTree(nums[maxIndex + 1:]) | |||||
| return root | |||||
| s = Solution() | |||||
| print("Expected tree with root 6") | |||||
| print("Got: tree with root", s.constructMaximumBinaryTree([3, 2, 1, 6, 0, 5]).val) |
| Given an integer array with no duplicates. A maximum tree building on this array is defined as follow: | |||||
| The root is the maximum number in the array. | |||||
| The left subtree is the maximum tree constructed from left part subarray divided by the maximum number. | |||||
| The right subtree is the maximum tree constructed from right part subarray divided by the maximum number. | |||||
| Construct the maximum tree by the given array and output the root node of this tree. | |||||
| Example 1: | |||||
| Input: [3,2,1,6,0,5] | |||||
| Output: return the tree root node representing the following tree: | |||||
| 6 | |||||
| / \ | |||||
| 3 5 | |||||
| \ / | |||||
| 2 0 | |||||
| \ | |||||
| 1 | |||||
| Note: | |||||
| The size of the given array will be in the range [1,1000]. | |||||
| #!/bin/bash | |||||
| python3 main.py |