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
\
1TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
return buildTree(nums.begin(), nums.end() - 1);
}
template<typename iter>
TreeNode* buildTree(iter start, iter end) {
if (start <= end) {
auto max_iter = max_element(start, end + 1);
TreeNode *root = new TreeNode(*max_iter);
root->left = buildTree(start, max_iter - 1);
root->right = buildTree(max_iter + 1, end);
return root;
}
else return nullptr;
}Last updated