Construct Binary Tree from Preorder and Inorder Traversal

Given preorder and inorder traversal of a tree, construct the binary tree.

Note:
You may assume that duplicates do not exist in the tree.

代码:

 1     TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
 2         // IMPORTANT: Please reset any member data you declared, as
 3         // the same Solution instance will be reused for each test case.
 4         int len = preorder.size();
 5         if(len == 0)
 6             return NULL;
 7         TreeNode *root = new TreeNode(preorder[0]);
 8         int i;
 9         for(i = 0; i < len; i++){
10             if(inorder[i] == preorder[0])
11                 break;
12         }
13         vector<int> lpreorder(preorder.begin()+1, preorder.begin()+i+1);
14         vector<int> linorder(inorder.begin(), inorder.begin()+i);
15         vector<int> rpreorder(preorder.begin()+i+1, preorder.end());
16         vector<int> rinorder(inorder.begin()+i+1, inorder.end());
17         vector<int>().swap(preorder);
18         vector<int>().swap(inorder);
19         root->left = buildTree(lpreorder, linorder);
20         root->right = buildTree(rpreorder, rinorder);
21         return root;
22     }
原文地址:https://www.cnblogs.com/waruzhi/p/3415001.html