思路
找到最大,分左右,然后再递归调用
代码
class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {if(nums.size() == 0 ) return nullptr;int maxIndex = 0;for(int i = 0; i < nums.size(); i++){if(nums[maxIndex] < nums[i]){maxIndex = i;}}TreeNode* root = new TreeNode(nums[maxIndex]);if(nums.size() == 1 ) return root;vector<int> leftNums(nums.begin(), nums.begin() + maxIndex);vector<int> rightNums(nums.begin() + maxIndex + 1, nums.end());root->left = constructMaximumBinaryTree(leftNums);root->right = constructMaximumBinaryTree(rightNums);return root;}
};