@@ -16,43 +16,43 @@ using namespace std;
1616
1717// Definition for a binary tree node.
1818struct 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
2525class Solution {
2626public:
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
4949void 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