就是前序中序变后序,以前用JAVA写过一个,是先建树然后后序遍历,其实解析前序中序的建树过程本身也是对树的遍历过程,因此可以把建树直接替换成输出,调整成后序的顺序,就可以了。
另外
scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
#include<stdio.h>
char pre[27],in[27];
int size;
void f(int preStart,int preLast,int inStart,int inLast){
char value = pre[preStart];
int i=-1;
while(in[++i]!=value);
if(inStart<i){
f(preStart+1,preStart+i-inStart,inStart,i-1);
}
if(inLast>i){
f(preStart+i-inStart+1,preLast,i+1,inLast);
}
printf("%c",value);
}
int main(){
while(scanf("%s%s",pre,in)!=EOF){
size=-1;
while(pre[++size]!=NULL);
f(0,size-1,0,size-1);
printf("\n");
}
return 0;
}