Skip to content

Commit ab20f1e

Browse files
committed
Update 105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal.cpp
1 parent e350616 commit ab20f1e

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

C/105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal.cpp

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,43 +16,43 @@ using namespace std;
1616

1717
// Definition for a binary tree node.
1818
struct TreeNode {
19-
int val;
20-
TreeNode *left;
21-
TreeNode *right;
22-
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
19+
int val;
20+
TreeNode *left;
21+
TreeNode *right;
22+
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
2323
};
2424

2525
class Solution {
2626
public:
27-
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
28-
return subtree(preorder, 0, preorder.size() - 1 , inorder, 0, preorder.size() - 1);
29-
}
30-
TreeNode* subtree(vector<int>& preorder, int begin1, int end1, vector<int>& inorder, int begin2, int end2){
31-
int i;
32-
if(end1 < begin1)
33-
return NULL;
34-
if(end1 == begin1)
35-
return new TreeNode(preorder.at(begin1));
36-
37-
TreeNode* root = new TreeNode(preorder.at(begin1));
38-
for(i = begin2; i < end2; i++){
39-
if(inorder.at(i) == root->val)
40-
break;
41-
}
42-
int left_length = i - begin2;
43-
root->left = subtree(preorder, begin1 + 1, begin1 + left_length, inorder, begin2, begin2 + left_length - 1);
44-
root->right = subtree(preorder, begin1 + left_length + 1, end1, inorder, begin2 + left_length + 1, end2);
45-
return root;
27+
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
28+
return subtree(preorder, 0, preorder.size() - 1 , inorder, 0, preorder.size() - 1);
29+
}
30+
TreeNode* subtree(vector<int>& preorder, int begin1, int end1, vector<int>& inorder, int begin2, int end2){
31+
int i;
32+
if(end1 < begin1)
33+
return NULL;
34+
if(end1 == begin1)
35+
return new TreeNode(preorder.at(begin1));
36+
37+
TreeNode* root = new TreeNode(preorder.at(begin1));
38+
for(i = begin2; i < end2; i++){
39+
if(inorder.at(i) == root->val)
40+
break;
4641
}
42+
int left_length = i - begin2;
43+
root->left = subtree(preorder, begin1 + 1, begin1 + left_length, inorder, begin2, begin2 + left_length - 1);
44+
root->right = subtree(preorder, begin1 + left_length + 1, end1, inorder, begin2 + left_length + 1, end2);
45+
return root;
46+
}
4747
};
4848

4949
void main(){
5050

51-
int pre[] = {1,2,3,4};
52-
vector<int> preorder(pre, pre + sizeof(pre) / sizeof(int));
53-
int in[] = {2,1,4,3};
54-
vector<int> inorder(in, in + sizeof(in) / sizeof(int));
55-
Solution sol;
56-
TreeNode* root = sol.buildTree(preorder, inorder);
51+
int pre[] = {1,2,3,4};
52+
vector<int> preorder(pre, pre + sizeof(pre) / sizeof(int));
53+
int in[] = {2,1,4,3};
54+
vector<int> inorder(in, in + sizeof(in) / sizeof(int));
55+
Solution sol;
56+
TreeNode* root = sol.buildTree(preorder, inorder);
5757

5858
}

0 commit comments

Comments
 (0)