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

来源:互联网 发布:淘宝店铺和旺铺的区别 编辑:程序博客网 时间:2024/06/05 20:41

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

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

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

Input

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

Output

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

Example Input

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

Example Output

abcdefgxnuli
代码如下
#include<stdio.h>#include<stdlib.h>#include<string.h>struct node{    int data;    struct node *left;    struct node *right;};struct node *creat(int n,char *str,char *str1){    struct node *tree;    if(n==0)        return NULL;    char *p;    tree=(struct node *)malloc(sizeof(struct node));    tree->data=str[0];    for(p=str1; p!='\0'; p++)    {        if(*p==str[0])            break;    }    int t=p-str1;    tree->left=creat(t,str+1,str1);    tree->right=creat(n-t-1,str+t+1,p+1);    return tree;}void bianli(struct node *tree){    int ans=0;    int temp=1;    struct node *p[60];    p[0]=tree;    while(ans<temp)    {        if(p[ans])        {            printf("%c",p[ans]->data);            p[temp++]=p[ans]->left;            p[temp++]=p[ans]->right;        }        ans++;    }}int main(){    int t;    struct node *tree;    char str[100];    char str1[100];    scanf("%d",&t);    while(t--)    {        scanf("%s%s",str,str1);        int n=strlen(str);        tree=creat(n,str,str1);        bianli(tree);        printf("\n");    }    return 0;}
1 0
原创粉丝点击