算法训练——求先序排列
//求先序排列 //已知中序和后序,求先序,递归 #include<stdio.h> #include<string.h> #define MAXN 8 //5个参数 中序序列,后序序列,根位置,开始下标,结束下标 void pre(char infixOrder[],char rearOrder[],int root,int start,int end){ if(start > end) return; int i = start; while(i< end && infixOrder[i] != rearOrder[root]) i++; printf("%c",rearOrder[root]); pre(infixOrder,rearOrder,root-end+i-1,start,i-1); pre(infixOrder,rearOrder,root-1,i+1,end); } int main(){ char infixOrder[MAXN]; char rearOrder[MAXN]; scanf("%s\n%s",infixOrder,rearOrder); int length = strlen(infixOrder); pre(infixOrder,rearOrder,length-1,0,length-1); return 0; }