class Solution {
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
if(nums.size() == 0) return NULL;
return buildTree(nums);
}
TreeNode* buildTree(vector<int>& nums) {
if(nums.size() == 0) return NULL;
int min = -1;
int index = 0;
for(int i = 0; i < nums.size(); i++) {
if(nums[i] > min) {
min = nums[i];
index = i;
}
}
TreeNode* root = new TreeNode(nums[index]);
vector<int> leftTree(nums.begin(), nums.begin() + index);
vector<int> rightTree(nums.begin() + index + 1, nums.end());
root->left = buildTree(leftTree);
root->right = buildTree(rightTree);
return root;
}
};