二叉树遍历

来源:互联网 发布:jquery清空数组元素 编辑:程序博客网 时间:2024/06/13 09:47

Problem Description

树和二叉树基本上都有先序、中序、后序,层序遍历等遍历顺序,给定中序和其他一种遍历的序列就可以确定一棵二叉树的结构。假定一棵二叉树一个结点用一个字符描述,现在给出中序和层序遍历的字符串,求该树的先序遍历字符串。

Input

输入有多组数据,对于输入每组数据有两行,每行是由字母组成的字符串(一行的每个字符都是唯一的,长度不超过20),分别表示二叉树的中序遍历和层序遍历的序列。

Output

对于每组输入输出二叉树的先序序列。

Sample Input

DBEACABCDE

Sample Output

ABDEC
//标程:
#include<stdio.h>#include<string.h>int vis[260],len;char s[30],str[30];void dg(int l,int r){    int k=1<<30,i,pos;    if(l>r)   return ;       for(i=l;i<=r;i++)  //在字符串s中根节点;    {        if(vis[s[i]]<k)         {            k=vis[s[i]];            pos=i;        }    }    printf("%c",s[pos]);   //先序遍历先输出    dg(l,pos-1);    //左子树进行递归    dg(pos+1,r);   //右子树进行递归}int main(){    //freopen("a.txt","r",stdin);    while(scanf("%s%s",s,str)!=EOF)    {        int len=strlen(s),i;        for(i=0;i<len;i++)  vis[str[i]]=i;  //对各个根节点进行编号;        dg(0,len-1);          printf("\n");    }    return 0;}
原创粉丝点击