leetcode 654 Maximum Binary Tree C++

来源:互联网 发布:merge算法 c语言 编辑:程序博客网 时间:2024/05/21 10:37

这个题第一想法就是递归,然后就写下了下面的代码。分成两部分,然后分别对两部分递归。

    TreeNode* util(vector<int>& nums, int left, int right) {        if (left > right) return NULL;        int max = INT_MIN;        int index = right;        for (int i = left ; i <= right ; i++) {            if (nums[i] > max) {                max = nums[i];                index = i;            }        }        TreeNode *root = new TreeNode(nums[index]);        root->left = util(nums, left, index - 1);        root->right = util(nums, index + 1, right);        return root;    }    TreeNode* constructMaximumBinaryTree(vector<int>& nums) {        return util(nums, 0, nums.size() - 1);    }

但是这个算法效率有些低下,高效率的可以去看discuss。

原创粉丝点击