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

来源:互联网 发布:寻妈记 知乎 编辑:程序博客网 时间:2024/04/29 14:05

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

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

输入

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

输出

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

示例输入

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

示例输出

abcdefgxnuli

提示

#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{    char data;    struct node *l,*r;};int cnt;char s[100];struct node *creat(){    cnt++;    struct node *q;    if(s[cnt] == ','){        q = NULL;    }else {        q  = (struct node *)malloc(sizeof(struct node));        q->data = s[cnt];        q->l = creat();        q->r = creat();    }    return q;}void seque(struct node *tree){    struct node *q[100];    int head = 0;    int tail = 1;    q[head] = tree;    while(head < tail){        if(q[head] != NULL){            printf("%c", q[head]->data);            q[tail++] = q[head]->l;            q[tail++] = q[head]->r;        }        head++;    }}int main(){    struct node *tree;    int t;    scanf("%d", &t);    while(t--){        scanf("%s", s);        cnt =-1;        tree = creat();        seque(tree);        printf("\n");    }    return 0;}

0 0