转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents
题目链接:http://poj.org/problem?id=2255
Description
D
/
/
B E
/ \
/ \
A C G
/
/
F
Input
Output
Sample Input
DBACEGF ABCDEFG BCAD CBAD
Sample Output
ACBFGED CDAB
题意:给出前序和中序遍历,求后续遍历;
思路,找到根,找到左子树,找到右子树
代码一如下:
#include <cstdio>
#include <cstring>
int count;
char a[47],b[47];
void find(int start, int end)
{
int i;
if(start > end)
return;
char root = a[count++];
for(i = start; i <= end; i++)
{
if(b[i] == root)
{
break;
}
}
find(start,i-1);
find(i+1,end);
printf("%c",root);
}
int main()
{
while(scanf("%s%s",a,b)!=EOF)
{
count = 0;
int len = strlen(b);
find(0,len-1);
printf("\n");
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define N 27
char pre[N],in[N];
int id[N];
void print(int a,int b,int c,int d)
{
int i=id[pre[a]-'A'];
int j=i-c;
int k=d-i;
if(j) print(a+1,a+j,c,i-1);
if(k) print(a+j+1,b,i+1,d);
printf("%c",pre[a]);
}
int main()
{
while(~scanf("%s%s",pre,in))
{
for(int i=0;in[i];i++)
id[in[i]-'A']=i;
int len=strlen(in);
print(0,len-1,0,len-1);
puts("");
}
return 0;
}poj2255 Tree Recovery(求后续遍历,二叉树),布布扣,bubuko.com
poj2255 Tree Recovery(求后续遍历,二叉树)
原文地址:http://blog.csdn.net/u012860063/article/details/37699219