已知中序,后序求先序
#include<iostream>
#include<cstdio>
#include<string>
#include<sstream>
using namespace std;
int in[100], post[100];
int n;
bool read_list(int *a) {
string s;
if(!getline(cin, s))
return false;
stringstream ss(s);
n = 0;
int x;
while(ss >> x) a[n++] = x;
return n > 0;
}
void getPre(int *In, int *Post, int len) {
if(!len) return ;
cout << Post[len-1] << ' ';
int root;
for(int i = 0; i < n; i++) {
if(In[i] == Post[len-1]) {
root = i;
break;
}
}
getPre(In, Post, root);
getPre(In+root+1, Post+root, len-(root+1));
}
int main() {
while(read_list(in)) {
read_list(post);
getPre(in, post, n);
cout << endl;
}
return 0;
}
已知先序,中序求后序
#include<iostream>
#inclu