Skip to content

Commit b5040eb

Browse files
committed
Construct Binary Tree from In & Post: stack & recursive.
1 parent c1b7db3 commit b5040eb

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include "../Header.h"
2+
3+
using namespace std;
4+
TreeNode* buildHelper(vector<int>& inorder, vector<int>& postorder, int il, int ir, int pl, int pr) {
5+
if (pl > pr) return nullptr;
6+
TreeNode *root = new TreeNode(postorder[pr]);
7+
int i = il;
8+
for (; i <= ir; i++) {
9+
if (inorder[i] == postorder[pr]) break;
10+
}
11+
int t = pr-ir+i;
12+
root->left = buildHelper(inorder, postorder, il, i-1, pl, t-1);
13+
root->right = buildHelper(inorder, postorder, i+1, ir, t, pr-1);
14+
return root;
15+
}
16+
17+
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
18+
int sz = postorder.size() - 1;
19+
return buildHelper(inorder, postorder, 0, sz, 0, sz);
20+
}
21+
22+
int main(int argc, char const *argv[])
23+
{
24+
return 0;
25+
}

0 commit comments

Comments
 (0)