#include<stdio.h>
#include<string.h>
struct node{
node *left;
node *right;
char ch;
node(){
left = NULL;
right = NULL;
ch = '\0';
}
};
node *root;
node *restruct(char *pre,char *ino,int len){
if(len<=0) return NULL;
char ch = pre[0];
int p = strchr(ino,ch)-ino+1; //找出左子树的个数+根
node *cur = new node;
cur->ch = ch;
cur->left = restruct(pre+1,ino,p-1);
cur->right = restruct(pre+p,ino+p,len-p); //边界问题
return cur;
}
void post(node *p){
if(p==NULL) return;
post(p->left);
post(p->right);
printf("%c ",p->ch);
}
int main(){
char pre[100],ino[100];
scanf("%s%s",pre,ino);
root=restruct(pre,ino,strlen(pre));
post(root);
return 0;
}
//abc bca
#include<string.h>
struct node{
node *left;
node *right;
char ch;
node(){
left = NULL;
right = NULL;
ch = '\0';
}
};
node *root;
node *restruct(char *pre,char *ino,int len){
if(len<=0) return NULL;
char ch = pre[0];
int p = strchr(ino,ch)-ino+1; //找出左子树的个数+根
node *cur = new node;
cur->ch = ch;
cur->left = restruct(pre+1,ino,p-1);
cur->right = restruct(pre+p,ino+p,len-p); //边界问题
return cur;
}
void post(node *p){
if(p==NULL) return;
post(p->left);
post(p->right);
printf("%c ",p->ch);
}
int main(){
char pre[100],ino[100];
scanf("%s%s",pre,ino);
root=restruct(pre,ino,strlen(pre));
post(root);
return 0;
}
//abc bca