* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
int n=pre.size();
int m=vin.size();
if(!n||!m)
return NULL;
TreeNode* root=new TreeNode(pre[0]);
for(int i=0;i<m;i++){
if(pre[0]==vin[i]){
vector<int>leftpre(pre.begin()+1,pre.begin()+i+1);
vector<int>leftvin(vin.begin(),vin.begin()+i+1);
root->left=reConstructBinaryTree(leftpre,leftvin);
vector<int>rightpre(pre.begin()+i+1,pre.end());
vector<int>rightvin(vin.begin()+i+1,vin.end());
root->right=reConstructBinaryTree(rightpre,rightvin);
break;
}
}
return root;
}
};