二叉树学习-已知中序、后序,求先序

来源:互联网 发布:5g网络4g手机能用吗 编辑:程序博客网 时间:2024/06/05 02:41

Description

 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历

Input

 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的中序遍历序列,第二个字符串表示二叉树的后序遍历序列。 

Output

 输出二叉树的先序遍历序列

Sample Input

2dbgeafcdgebfcalnixulinux

Sample Output

abdegcfxnliu
代码如下:
#include <iostream>#include"cstdio"#include"cstring"#include"cstdlib"using namespace std;char ins[1050],pos[1050];struct node{    char data;    node *lch,*rch;};node *build(char *ins ,char*pos,int n){    if(n<=0) return NULL;    node *p;    p=(node*)malloc(sizeof(node));    p->data=pos[n-1];    int k;    for( k=0;k<n;k++)        if(ins[k]==pos[n-1])        break;    p->lch=build(ins,pos,k);    p->rch=build(ins+k+1,pos+k,n-k-1);    return p;}void xianxu(node *p){    if(p!=NULL)    {        printf("%c",p->data);        xianxu(p->lch);        xianxu(p->rch);    }}int main(){     int t;     scanf("%d",&t);     while(t--)     {memset(ins,'\0',sizeof(ins));      memset(pos,'\0',sizeof(pos));      scanf("%s%*c%s",ins,pos);      node *tree;      tree=(node*)malloc(sizeof(node));      int n=strlen(ins);      tree=build(ins,pos,n);      xianxu(tree);      putchar('\n');     }    return 0;}
0 0
原创粉丝点击