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;
    }
};