leetcode.654 最大二叉树

106 阅读1分钟
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;
    }
};