1169 二叉树遍历(XCOJ DFS)

时间:2023-03-08 16:48:30

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8)。

样例输入

BADC
BDCA

样例输出

ABCD
 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char ch1[],ch2[];
int len1,len2;
int dfs(int s,int e,int a,int b)
{
int i,j;
if(s>e)
return ;
printf("%c",ch2[e]);
if(s==e)
return ;
for(i=a;i<=b;i++)
if(ch1[i]==ch2[e])
break;
int l=i-a,r=b-i;
dfs(s,s+l-,a,i-);
dfs(s+l,e-,i+,b);
return ;
}
int main()
{
freopen("in.txt","r",stdin);
while(scanf("%s%s",ch1,ch2)!=EOF)
{
len1=strlen(ch1),len2=strlen(ch2);
dfs(,len2-,,len1-);
printf("\n");
}
}