#include <stdio.h>
#include <string.h>
#include <iostream>
#include <vector>
#include <stdlib.h>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void Build_BinaryTree(int length,int be,int la, vector<int> pre,vector<int> vin,TreeNode* root)
{
int pos=-1;
for(int j=0;j<=length;j++){
for(int i=be;i<=la;i++)
{
if(pre[j]==vin[i])
{
pos=i;
break;
}
}
if(pos!=-1)
break;
}
if(pos==-1){
root=NULL;
return ;
}
root=new TreeNode(vin[pos]);
Build_BinaryTree(length ,be,pos-1,pre,vin,root->left);
Build_BinaryTree(length ,pos+1,la,pre,vin,root->right);
}
int main()
{
vector<int> pre;
vector<int> vin;
int n;
cin >>n;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
pre.push_back(a);
}
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
vin.push_back(a);
}
TreeNode *root;
int length = vin.size();
Build_BinaryTree(length-1,0,length-1,pre,vin,root);
}
#include <string.h>
#include <iostream>
#include <vector>
#include <stdlib.h>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void Build_BinaryTree(int length,int be,int la, vector<int> pre,vector<int> vin,TreeNode* root)
{
int pos=-1;
for(int j=0;j<=length;j++){
for(int i=be;i<=la;i++)
{
if(pre[j]==vin[i])
{
pos=i;
break;
}
}
if(pos!=-1)
break;
}
if(pos==-1){
root=NULL;
return ;
}
root=new TreeNode(vin[pos]);
Build_BinaryTree(length ,be,pos-1,pre,vin,root->left);
Build_BinaryTree(length ,pos+1,la,pre,vin,root->right);
}
int main()
{
vector<int> pre;
vector<int> vin;
int n;
cin >>n;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
pre.push_back(a);
}
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
vin.push_back(a);
}
TreeNode *root;
int length = vin.size();
Build_BinaryTree(length-1,0,length-1,pre,vin,root);
}