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>& preorder, vector<int>& inorder) {
return helper(preorder, inorder, 0, 0, inorder.size() - 1);
}
TreeNode* helper(vector<int>& preorder, vector<int>& inorder, int p, int ib, int ie){
if(ib > ie || p >= preorder.size())
return nullptr;
int node_val = preorder[p];
int in_mid = -1;
for(int i = ib; i <= ie; ++i)
if(inorder[i] == node_val) {
in_mid = i;
break;
}
TreeNode* node = new TreeNode(node_val);
node->left = helper(preorder, inorder, p + 1, ib, in_mid - 1);
node->right = helper(preorder, inorder, p + 1 + in_mid - ib, in_mid + 1, ie);
return node;
}
};

Accepted

203/203 cases passed (16 ms)

Your runtime beats 91.27 % of cpp submissions

Your memory usage beats 58.58 % of cpp submissions (16.8 MB)