求二叉树的先序遍历

来源:互联网 发布:老七mob淘宝店 编辑:程序博客网 时间:2024/05/18 02:22
题目描述
 已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
输入
 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的中序遍历序列,第二个字符串表示二叉树的后序遍历序列。 
输出
 输出二叉树的先序遍历序列
示例输入
2
dbgeafc

dgebfca

lnixu

linux


示例输出
abdegcf

xnliu


#include <stdio.h>#include <string.h>#include <stdlib.h>struct node{    char data;    struct node *l,*r;};struct node *creat(int len ,char *s1,char *s2){    struct node *root;    int i;    root=(struct node *)malloc(sizeof(struct node));    if(len==0)    return NULL;    root->data=s2[len-1];  //后序中最后一个是结点    for(i=0;i!=len;i++)//在中序中找结点    {        if(s1[i]==s2[len-1])        break;    }    printf("%c",root->data);    root->l=creat(i,s1,s2);    root->r=creat(len-i-1,s1+i+1,s2+i);    return root;};int main(){    int t,len;    char s1[100],s2[100],n;    struct node *root;    root=(struct node *)malloc(sizeof(struct node));    scanf("%d",&t);    while(t--)    {        scanf("%s %s",s1,s2);        len=strlen(s1);        root=creat(len,s1,s2);        printf("\n");    }    return 0;}



0 0
原创粉丝点击