2137 데이터 구조 실험의 두 갈래 트리 뒷차례 반복과 차원 반복

3236 단어 두 갈래 나무SDUT

데이터 구조 실험의 두 갈래 트리 뒷차례 반복과 차원 반복


Time Limit: 1000ms Memory limit: 65536K여기를 누르세요^_^

제목 설명


이미 한 그루의 두 갈래 나무의 앞 순서와 중간 순서를 알고 있으며, 두 갈래 나무의 뒷 순서를 구한다.

입력


입력 데이터가 여러 그룹이고 첫 번째 줄은 정수 t(t<1000)로 t그룹 테스트 데이터가 있음을 나타낸다.각 그룹은 길이가 50보다 작은 두 개의 문자열을 포함하는데, 첫 번째 문자열은 두 갈래 나무의 선순 역행 서열을 나타내고, 두 번째 문자열은 두 갈래 나무의 중순 역행 서열을 나타낸다.

출력


각 그룹의 첫 번째 줄은 두 갈래 트리의 뒷차례 역행 서열을 출력하고, 두 번째 줄은 두 갈래 트리의 차원 역행 서열을 출력한다.

예제 입력

2
abdegcf
dbgeafc
xnliu
lnixu

예제 출력

dgebfca
abcdefg
linux
xnuli


#include 
#include 
#include 
struct node
{
    char data ;
    struct node *l,*r;
};
struct node *build (char *a,char *b,int n)
{
    int k=0;
    struct node *p;
    char *new;
    if (n<=0)
        return NULL;
    p=(struct node *)malloc(sizeof (struct node ));
    p->data=*a;
    for (new=&b[0];new l=build (a+1,b,k);
    p->r=build (a+1+k,new+1,n-1-k);
    return p;
}
void last (struct node *p)
{
    if (p!=NULL)
    {
        last (p->l);
        last (p->r);
        printf ("%c",p->data);
    }
}
void cengci (struct node *t)// , 
{
    int a=0,s=1;//a ,s 
    struct node *p[10000];
    p[0]=t;
    while (adata);
           p[s]=p[a]->l;// , +1; 
          s++;
           p[s]=p[a]->r;
           a++;s++;// 1
        }
        else
        {
            a++;
        }
    }
}
int main ()
{
    int t,n;
    char a[100],b[100];
    while (~scanf ("%d",&t))
    {
        while (t--)
        {
            struct node *tree;
            scanf ("%s%s",a,b);
            n=strlen (a);
            tree=build (a,b,n);
            last (tree);
            printf ("
"); cengci (tree); printf ("
"); } } return 0; }

좋은 웹페이지 즐겨찾기