class Solution {
public:
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
int len= postorder.size();
if(len==0)
return NULL;
int gen=0;
for(int i=0;i<inorder.size();i++){
if(inorder[i]==postorder[len-1]){
gen=i;
break;
}
}
vector<int> in_left,in_right,pos_left,post_right;
for(int i=0;i<gen;i++)
{
in_left.push_back(inorder[i]);
pos_left.push_back(postorder[i]);
}
for(int i=gen+1;i<len;i++){
in_right.push_back(inorder[i]);
post_right.push_back(postorder[i-1]);
}
TreeNode* root= new TreeNode(postorder[len-1]);
root->left= buildTree(in_left,pos_left);
root->right= buildTree(in_right,post_right);
return root;
}
};