-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLeetcode第654题.cpp
More file actions
36 lines (36 loc) · 946 Bytes
/
Leetcode第654题.cpp
File metadata and controls
36 lines (36 loc) · 946 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Solution {
private:
int findMaxindex(int begin,int end,vector<int>& nums)
{
int maxIndex=begin;
for(int i=begin;i<=end;++i)
{
if(nums[i]>nums[maxIndex]){
maxIndex=i;
}
}
return maxIndex;
}
TreeNode* construct(int begin,int end,vector<int>& nums)
{
TreeNode *root=new TreeNode;
if(begin==end){
root->val=nums[begin];
root->left=NULL;
root->right=NULL;
return root;
}
if(begin>end){
return NULL;
}
int maxIndex=findMaxindex(begin,end,nums);
root->val=nums[maxIndex];
root->left=construct(begin,maxIndex-1,nums);
root->right=construct(maxIndex+1,end,nums);
return root;
}
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
return construct(0,nums.size()-1,nums);
}
};