下面的资料是关于程序员经典面试题:二叉树遍历的代码。
#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; }
|