lurenaa的博客

😂递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
return helper(inorder, postorder, 0, inorder.size() - 1, 0, postorder.size() - 1);
}
TreeNode* helper(vector<int>& inorder, vector<int>& postorder, int ib, int ie, int pb, int pe)
{
if(ib > ie)
return nullptr;
int top = postorder[pe];
int pmid = -1;
for(int i = ib; i <= ie; ++i) {
if(inorder[i] == top)
pmid = i;
}
TreeNode* new_one = new TreeNode(top);
new_one->right = helper(inorder, postorder,pmid + 1, ie, pb, pe - 1);
new_one->left = helper(inorder, postorder,ib, pmid - 1, pb, pe - 1 + pmid - ie);
return new_one;
}
};

Accepted

203/203 cases passed (20 ms)

Your runtime beats 80.17 % of cpp submissions

Your memory usage beats 72.29 % of cpp submissions (16.7 MB)