654.Maximum Binary Tree
Example 1:
Input: [3,2,1,6,0,5]
Output: return the tree root node representing the following tree:
6
/ \
3 5
\ /
2 0
\
1
Note:
The size of the given array will be in the range [1,1000]./**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
vector<int> num;
TreeNode* getMaxInd(int start, int end)
{
if(start == end) return new TreeNode(num[start]);
int m=INT_MIN;
int res=start;
for(int i=start;i<=end;i++)
{
if(num[i]>m)
{
res=i;
m=num[i];
}
}
TreeNode* root= new TreeNode(num[res]);
if(res-start>0) root->left = getMaxInd(start, res-1);
if(end - res>0) root->right = getMaxInd(res+1,end);
return root;
}
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
num=nums;
return getMaxInd(0,num.size()-1);
}
};Last updated