Skip to content

Commit d2a9658

Browse files
authored
Create Sagittarius.md
1 parent 1a09a80 commit d2a9658

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

2018.12.08-leetcode105/Sagittarius.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
```
2+
/**
3+
* Definition for a binary tree node.
4+
* struct TreeNode {
5+
* int val;
6+
* TreeNode *left;
7+
* TreeNode *right;
8+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
9+
* };
10+
*/
11+
class Solution {
12+
public:
13+
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
14+
return rebuildTree(0,preorder.size()-1,0,inorder.size()-1,preorder,inorder);
15+
}
16+
17+
TreeNode* rebuildTree(int preL,int preR,int inL,int inR,vector<int>& preorder,vector<int>& inorder)
18+
{
19+
if(preL>preR)
20+
return nullptr;
21+
TreeNode* root=new TreeNode(preorder[preL]);
22+
int k;
23+
for(int i=0;i<=inR;i++)
24+
{
25+
if(preorder[preL]==inorder[i])
26+
{
27+
k=i;
28+
break;
29+
}
30+
}
31+
int numPre=k-inL;
32+
root->left=rebuildTree(preL+1,preL+numPre,inL,k-1,preorder,inorder);
33+
root->right=rebuildTree(preL+numPre+1,preR,inL+numPre+1,inR,preorder,inorder);
34+
35+
return root;
36+
}
37+
};
38+
```

0 commit comments

Comments
 (0)