#include <bits/stdc++.h>
using namespace std;
void postOrder(int l1,int r1,int l2, int r2, int a[], int b[]){
int i =l2;
for( ;i<=r2; i++){
if(a[l1] == b[i]){
postOrder(l1+1,l1+i-l2, l2,i-1, a,b);
postOrder(l1+i-l2+1,r1, i+1,r2, a,b);
cout<<a[l1]<<" ";
return ;
}
}
}
void preOrder(int l1,int r1, int l2, int r2, int c[], int b[]){
int i = l2;
for(;i<=r2;i++){
if(c[r1] == b[i]){
cout<<c[r1]<< " ";
preOrder(l1,l1+i-l2-1,l2,i-1,c,b);
preOrder(l1+i-l2,r1-1,i+1,r2,c,b);
return;
}
}
}
int main(){
int a[8]= {0,1,2,3,4,5,6,7}; //前序
int b[8]= {0,4,3,5,2,6,1,7}; //中序
int c[8] = {0,4,5,3,6,2,7,1}; //后序
postOrder(1,7,1,7,a,b);
cout<<"-------"<<endl;
preOrder(1,7,1,7,c,b);
cout<<"-------"<<endl;
return 0;
}