class Solution {
public:
TreeNode *buildTree(
vector<int> &preorder,
vector<int> &inorder) {
vector<int> pre_l,pre_r,in_l,in_r;
TreeNode* root=NULL;
int i=
0;
int index=
0;
if(!preorder.empty()||!inorder.empty())
{
root=
new TreeNode(preorder[
0]);
for(i=
0;i<inorder.size();i++)
{
if(preorder[
0]==inorder[i])
{
index=i;
break;
}
}
for(i=
0;i<index;i++)
{
pre_l.push_back(preorder[i+
1]);
in_l.push_back(inorder[i]);
}
for(i=index+
1;i<inorder.size();i++)
{
pre_r.push_back(preorder[i]);
in_r.push_back(inorder[i]);
}
root->left=buildTree(pre_l,in_l);
root->right=buildTree(pre_r,in_r);
}
return root;
}
};