Skip to content

Commit 1747c44

Browse files
committed
105
1 parent ee9337e commit 1747c44

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

105.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
public:
3+
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
4+
int ins=0;
5+
int ine=inorder.size()-1;
6+
int pres=0;
7+
int pree=preorder.size()-1;
8+
return buildTree(preorder,inorder,ins,ine,pres,pree);
9+
}
10+
TreeNode * buildTree(vector<int>preorder,vector<int>inorder,int ins,int ine,int pres,int pree){
11+
if(ins>ine){
12+
return NULL;
13+
}
14+
int rootdata =preorder[pres];
15+
int rootindex=-1;
16+
for(int i=0;i<preorder.size();i++){
17+
if( inorder[i]==rootdata){
18+
rootindex=i;
19+
break;
20+
}
21+
}
22+
int lins=ins;
23+
int rins=rootindex+1;
24+
int line=rootindex-1;
25+
int rine=ine;
26+
int lpres=pres+1;
27+
int lpree=line-lins+lpres;
28+
int rpres=lpree+1;
29+
int rpree=pree;
30+
TreeNode * node=new TreeNode(rootdata);
31+
node->left=buildTree(preorder,inorder,lins,line,lpres,lpree);
32+
node->right=buildTree(preorder,inorder,rins,rine,rpres,rpree);
33+
return node;
34+
}
35+
};

0 commit comments

Comments
 (0)