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