Skip to content

Commit 4d44ab4

Browse files
committed
cpp
1 parent 7d73991 commit 4d44ab4

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class Solution {
2+
public:
3+
TreeNode* buildTree(vector<int>& postorder, vector<int>& inorder) {
4+
int ins=0;
5+
int ine=inorder.size()-1;
6+
int posts=0;
7+
int poste=postorder.size()-1;
8+
return treehelper(postorder,inorder,ins,ine,posts,poste);
9+
}
10+
11+
TreeNode * treehelper(vector<int>in,vector<int>pos, int inS, int inE , int posS, int posE)
12+
{
13+
if(inS >inE)
14+
{
15+
return NULL;
16+
}
17+
int rootdata=pos[posE];
18+
int rootindex;
19+
20+
for(int i=inS;i<=inE;i++)
21+
{
22+
if(in[i]==rootdata)
23+
{
24+
rootindex=i;
25+
break;
26+
}
27+
}
28+
int rootindex1;
29+
for(int j=posS;j<=posE;j++)
30+
{
31+
if(pos[j]==rootdata)
32+
{
33+
rootindex1=j;
34+
break;
35+
}
36+
}
37+
38+
int LinS=inS;
39+
int LinE=rootindex-1;
40+
int LposS=posS;
41+
int LposE=LinE-LinS+LposS;
42+
int RinS=rootindex+1;
43+
int RinE=inE;
44+
int RposS=LposE+1;
45+
int RposE=rootindex1-1;
46+
TreeNode * node1= new TreeNode(rootdata);
47+
node1->left=treehelper(in,pos,LinS,LinE,LposS,LposE);
48+
node1->right=treehelper(in,pos,RinS,RinE,RposS,RposE);
49+
return node1;
50+
}
51+
52+
};

0 commit comments

Comments
 (0)