# 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 |