下面的资料是关于程序员经典面试题:二叉树遍历的代码。
#include
using namespace std;
int pre[1024],post[1024],in[1024];
int i;
if (len <= 0) {
return true;
}
for (i = 0; i < len; ++i) {
if (pre[fpre] == in[fin + i]) {
break;
}
}
if (i >= len) {
return false;
}
if (!can(pre,in,post,fpre + 1,fin,fpost,i)) {
return false;
}
if (!can(pre,in,post,fpre + i + 1,fin + i + 1, fpost + i,len - i - 1)) {
return false;
}
post[fpost + len - 1] = pre[fpre];
return true;
}
int main() {
int i,n;
while (scanf("%d",&n) != EOF) {
for (i = 0; i < n; ++i) {
scanf("%d",pre + i);
}
for (i = 0; i < n; ++i) {
scanf("%d", in + i);
}
if (can(pre,in,post,0,0,0,n)) {
for (i = 0; i < n; ++i) {
printf("%d “,post[i]);
}
puts(”");
}
else {
puts(“No”);
}
}
return 0;
}