class Solution {
public:
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
if(!pre.size()) return NULL;
int index=-1;
for(int i=0; i<vin.size(); i++)
if(vin[i]==pre[0])
index=i;
TreeNode *node=new TreeNode(pre[0]);
if(index>0)
{
vector<int> leftpre(pre.begin()+1,pre.begin()+index+1),
leftvin(vin.begin(),vin.begin()+index);
node->left=reConstructBinaryTree(leftpre,leftvin);
}
if(index<vin.size()-1)
{
vector<int> rightpre(pre.begin()+index+1,pre.end()),
rightvin(vin.begin()+index+1,vin.end());
node->right=reConstructBinaryTree(rightpre,rightvin);
}
return node;
}
};