| @@ -0,0 +1,29 @@ | |||
| # 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) | |||
| @@ -0,0 +1,25 @@ | |||
| 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]. | |||
| @@ -0,0 +1,3 @@ | |||
| #!/bin/bash | |||
| python3 main.py | |||