Skip to content

Commit 3393ea0

Browse files
authored
Construct BT from Inorder and Postorder Traversal
1 parent a9404c6 commit 3393ea0

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8+
* };
9+
*/
10+
class Solution {
11+
public:
12+
13+
int findElem(vector<int>& inorder,int elem){
14+
int i=0;
15+
while(inorder[i]!=elem)
16+
i+=1;
17+
return i;
18+
}
19+
TreeNode* buildTree(vector<int>& inorder,int is,int ie, vector<int>& postorder,int ps,int pe){
20+
if(ps>pe)
21+
return NULL;
22+
if(ps==pe){
23+
TreeNode* temp=new TreeNode(postorder[ps]);
24+
return temp;
25+
}
26+
TreeNode* temp=new TreeNode(postorder[pe]);
27+
int ind=findElem(inorder,postorder[pe]);
28+
int ir=(ie-is+1)-(ind-is+1);
29+
temp->left=buildTree(inorder,is,ind-1,postorder,ps,pe-ir-1);
30+
temp->right=buildTree(inorder,ind+1,ie,postorder,pe-ir,pe-1);
31+
return temp;
32+
}
33+
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
34+
int sze=inorder.size();
35+
if(sze==0)
36+
return NULL;
37+
return buildTree(inorder,0,sze-1,postorder,0,sze-1);
38+
}
39+
};

0 commit comments

Comments
 (0)