654. Maximum Binary Tree
Input: [3,2,1,6,0,5]
Output: return the tree root node representing the following tree:
6
/ \
3 5
\ /
2 0
\
1// Brute Force Recursion
TreeNode* helper(vector<int>& nums, int start, int end) {
if (start > end) return nullptr;
int max_idx = start;
for (int i = start + 1; i <= end; ++i) {
if (nums[i] > nums[max_idx]) max_idx = i;
}
TreeNode* res = new TreeNode(nums[max_idx]);
res->left = helper(nums, start, max_idx - 1);
res->right = helper(nums, max_idx + 1, end);
return res;
}
TreeNode* constructMaximumBinaryTree(vector<int>& nums) { // time: O(n^2); space: O(n)
return helper(nums, 0, nums.size() - 1);
}Last updated