题目模板如下:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
const int N = 40;
int in[N],post[N],pre[N];
int n;
int index;
void dfs(int root, int start, int end){
if(start > end) return;
int i = start;
while(i < end && in[i] != post[root]) i++;
pre[index++] = post[root];
dfs(root-(end - i + 1), start, i - 1);
dfs(root - 1, i + 1, end);
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&post[i]);
for(int i=0;i<n;i++) scanf("%d",&in[i]);
dfs(n-1,0,n-1);
printf("Preorder: ");
for(int i=0;i<index;i++){
printf("%d",pre[i]);
if(i!=index - 1) printf(" ");
}
return 0;
}