通过后序序列找根结点,在中序序列中分成两部分。
以下是我的代码:
#include<stdio.h>
#include<string.h>
char s1[30],s2[30];
int pos(char s[],char x)


{
int i=-1;
while(s[++i]!=x);
return i;
}
void solve(int begin1,int end1,int begin2,int end2)


{
int m;
m=pos(s1,s2[end2]);
printf("%c",s2[end2]);
if( m>begin1 )
solve(begin1,m-1,begin2,begin2-begin1+m-1);
if( m<end1 )
solve(m+1,end1,end2-end1+m,end2-1);
}
int main()


{
gets(s1);
gets(s2);
solve(0,strlen(s1)-1,0,strlen(s2)-1);
putchar('\n');
return 0;
}

posted on 2010-01-06 20:12
lee1r 阅读(270)
评论(1) 编辑 收藏 引用 所属分类:
题目分类:递推/递归