算法训练——求先序排列

 

//求先序排列
//已知中序和后序,求先序,递归 
#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;	
} 

  

posted @ 2020-02-02 17:27  Hqx_curiosity  阅读(327)  评论(0编辑  收藏  举报