#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int val):val(val),left(nullptr),right(nullptr){};
};
int idx = 0;
unordered_map<int,int>mp;
TreeNode* help(vector<int>&pre,int st,int end){
if(st>end)return nullptr;
int rootVal = pre[idx++];
int mid = mp[rootVal];
TreeNode* root = new TreeNode(rootVal);
root->left = help(pre,st,mid-1);
root->right = help(pre,mid+1,end);
return root;
}
TreeNode* bt(vector<int>&pre,vector<int>&in){
for(int i = 0;i<in.size();i++){
mp[in[i]] = i;
}
return help(pre,0,in.size()-1);
}
TreeNode* buildTree(){
int x;cin>>x;
if(x==-1)return nullptr;
TreeNode* root = new TreeNode(x);
queue<TreeNode*>q;
q.push(root);
while(!q.empty()){
auto u = q.front();
q.pop();
if(cin>>x && x!=-1){
u->left = new TreeNode(x);
q.push(u->left);
}
if(cin>>x && x!=-1){
u->right = new TreeNode(x);
q.push(u->right);
}
}
return root;
}
void preO(TreeNode* root){
if(!root)return;
cout<<root->val<<endl;
preO(root->left);
preO(root->right);
}
void print(TreeNode* root) {
if (!root) {
cout << "[]" << endl;
return;
}
vector<string> result;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* curr = q.front();
q.pop();
if (curr) {
result.push_back(to_string(curr->val));
// Push children even if they are null
q.push(curr->left);
q.push(curr->right);
} else {
result.push_back("null");
}
}
// Remove all the trailing "null"s from the back of the result
while (!result.empty() && result.back() == "null") {
result.pop_back();
}
// Print the array with brackets and commas
cout << "[";
for (int i = 0; i < result.size(); i++) {
cout << result[i];
if (i < result.size() - 1) cout << ",";
}
cout << "]" << endl;
}
int main() {
// TreeNode* root = buildTree();
int n;
cin>>n;
vector<int>pre(n),in(n);
for(int i = 0;i < n ;i++){
cin>>pre[i];
}
for(int i = 0;i < n ;i++){
cin>>in[i];
}
TreeNode* Croot = bt(pre,in);
preO(Croot);
print(Croot);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBUcmVlTm9kZXsKCWludCB2YWw7CglUcmVlTm9kZSogbGVmdDsKCVRyZWVOb2RlKiByaWdodDsKCQoJVHJlZU5vZGUoaW50IHZhbCk6dmFsKHZhbCksbGVmdChudWxscHRyKSxyaWdodChudWxscHRyKXt9Owp9OwppbnQgaWR4ID0gMDsKdW5vcmRlcmVkX21hcDxpbnQsaW50Pm1wOwpUcmVlTm9kZSogaGVscCh2ZWN0b3I8aW50PiZwcmUsaW50IHN0LGludCBlbmQpewoKCWlmKHN0PmVuZClyZXR1cm4gbnVsbHB0cjsKCWludCByb290VmFsID0gcHJlW2lkeCsrXTsKCWludCBtaWQgPSBtcFtyb290VmFsXTsKCQoJVHJlZU5vZGUqIHJvb3QgPSBuZXcgVHJlZU5vZGUocm9vdFZhbCk7CiAgICByb290LT5sZWZ0ID0gaGVscChwcmUsc3QsbWlkLTEpOwoJcm9vdC0+cmlnaHQgPSBoZWxwKHByZSxtaWQrMSxlbmQpOwoJcmV0dXJuIHJvb3Q7Cn0KVHJlZU5vZGUqIGJ0KHZlY3RvcjxpbnQ+JnByZSx2ZWN0b3I8aW50PiZpbil7Cglmb3IoaW50IGkgPSAwO2k8aW4uc2l6ZSgpO2krKyl7CgkJbXBbaW5baV1dID0gaTsKCX0KCXJldHVybiBoZWxwKHByZSwwLGluLnNpemUoKS0xKTsKfQpUcmVlTm9kZSogYnVpbGRUcmVlKCl7CglpbnQgeDtjaW4+Png7CglpZih4PT0tMSlyZXR1cm4gbnVsbHB0cjsKCVRyZWVOb2RlKiAgcm9vdCA9IG5ldyBUcmVlTm9kZSh4KTsKCQoJcXVldWU8VHJlZU5vZGUqPnE7CglxLnB1c2gocm9vdCk7CgkKCXdoaWxlKCFxLmVtcHR5KCkpewoJCWF1dG8gdSA9IHEuZnJvbnQoKTsKCQlxLnBvcCgpOwoJCQoJCWlmKGNpbj4+eCAmJiB4IT0tMSl7CgkJCXUtPmxlZnQgPSBuZXcgVHJlZU5vZGUoeCk7CgkJCXEucHVzaCh1LT5sZWZ0KTsKCQl9CgkJCgkJaWYoY2luPj54ICYmIHghPS0xKXsKCQkJdS0+cmlnaHQgPSBuZXcgVHJlZU5vZGUoeCk7CgkJCXEucHVzaCh1LT5yaWdodCk7CgkJfQoJCQoJfQoJcmV0dXJuIHJvb3Q7Cn0Kdm9pZCBwcmVPKFRyZWVOb2RlKiByb290KXsKCWlmKCFyb290KXJldHVybjsKCWNvdXQ8PHJvb3QtPnZhbDw8ZW5kbDsKCXByZU8ocm9vdC0+bGVmdCk7CglwcmVPKHJvb3QtPnJpZ2h0KTsKCQp9CnZvaWQgcHJpbnQoVHJlZU5vZGUqIHJvb3QpIHsKICAgIGlmICghcm9vdCkgewogICAgICAgIGNvdXQgPDwgIltdIiA8PCBlbmRsOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2ZWN0b3I8c3RyaW5nPiByZXN1bHQ7CiAgICBxdWV1ZTxUcmVlTm9kZSo+IHE7CiAgICBxLnB1c2gocm9vdCk7CgogICAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgICAgICBUcmVlTm9kZSogY3VyciA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwoKICAgICAgICBpZiAoY3VycikgewogICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKHRvX3N0cmluZyhjdXJyLT52YWwpKTsKICAgICAgICAgICAgLy8gUHVzaCBjaGlsZHJlbiBldmVuIGlmIHRoZXkgYXJlIG51bGwKICAgICAgICAgICAgcS5wdXNoKGN1cnItPmxlZnQpOwogICAgICAgICAgICBxLnB1c2goY3Vyci0+cmlnaHQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soIm51bGwiKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gUmVtb3ZlIGFsbCB0aGUgdHJhaWxpbmcgIm51bGwicyBmcm9tIHRoZSBiYWNrIG9mIHRoZSByZXN1bHQKICAgIHdoaWxlICghcmVzdWx0LmVtcHR5KCkgJiYgcmVzdWx0LmJhY2soKSA9PSAibnVsbCIpIHsKICAgICAgICByZXN1bHQucG9wX2JhY2soKTsKICAgIH0KCiAgICAvLyBQcmludCB0aGUgYXJyYXkgd2l0aCBicmFja2V0cyBhbmQgY29tbWFzCiAgICBjb3V0IDw8ICJbIjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgY291dCA8PCByZXN1bHRbaV07CiAgICAgICAgaWYgKGkgPCByZXN1bHQuc2l6ZSgpIC0gMSkgY291dCA8PCAiLCI7CiAgICB9CiAgICBjb3V0IDw8ICJdIiA8PCBlbmRsOwp9CmludCBtYWluKCkgewovLwlUcmVlTm9kZSogcm9vdCAgPSBidWlsZFRyZWUoKTsKCWludCBuOwoJY2luPj5uOwoJdmVjdG9yPGludD5wcmUobiksaW4obik7CgkKCWZvcihpbnQgaSA9IDA7aSA8IG4gO2krKyl7CgkJY2luPj5wcmVbaV07Cgl9CgkKCQlmb3IoaW50IGkgPSAwO2kgPCBuIDtpKyspewoJCWNpbj4+aW5baV07Cgl9CgkKCVRyZWVOb2RlKiBDcm9vdCA9IGJ0KHByZSxpbik7CglwcmVPKENyb290KTsKCXByaW50KENyb290KTsKCXJldHVybiAwOwp9