@@ -16,43 +16,43 @@ using namespace std;
16
16
17
17
// Definition for a binary tree node.
18
18
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 ) {}
23
23
};
24
24
25
25
class Solution {
26
26
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 ;
46
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;
46
+ }
47
47
};
48
48
49
49
void main (){
50
50
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);
57
57
58
58
}
0 commit comments