数据结构实验之二叉树五:层序遍历

来源:互联网 发布:网络身份认证技术 编辑:程序博客网 时间:2024/06/07 02:37

数据结构实验之二叉树五:层序遍历

Time Limit: 1000MS Memory Limit: 65536KB

Submit Statistic

Problem Description

已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。

Input

输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。

Output

输出二叉树的层次遍历序列。

Example Input

2
abd,,eg,,,cf,,,
xnl,,i,,u,,

Example Output

abcdefg
xnuli

Hint

Author

xam

#include<stdio.h>#include<stdlib.h>#include<string.h>struct node{    char data;    struct node *lchild,*rchild;};char a[55];int n,i;struct node *creat()//按照先序建立树{    struct node *t;    char e;    e = a[i++];    if(e==',')return t = NULL;    else    {        t = (struct node *)malloc(sizeof(struct node));        t -> data = e;        t -> lchild = creat();        t -> rchild = creat();    }    return t;}void output(struct node *t){    int i = 0,j = 1;    struct node *b[55];//建立结构体数组    b[0] = t;    while(i < j)    {        if(b[i])        {            printf("%c",b[i]->data);            b[j++] = b[i] -> lchild;//若结点不为空,则下一个数组元素存左孩子            b[j++] = b[i] -> rchild;//存右孩子的地址;        }        i++;    }}int main(){    while(~scanf("%d",&n))    {        while(n--)        {            struct node *T;            i = 0;            scanf("%s",a);            T = creat();            output(T);            printf("\n");        }    }    return 0;}