数据结构实验之二叉树五:层序遍历
Time Limit: 1000 ms
Memory Limit: 65536 KiB
Problem Description
已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。
Input
输入数据有多行,第一行是一个整数
t (t<1000)
,代表有
t
行测试数据。每行是一个长度小于
50
个字符的字符串。
Output
输出二叉树的层次遍历序列。
Sample Input
2 abd,,eg,,,cf,,, xnl,,i,,u,,
Sample Output
abcdefg xnuli
#include <stdio.h> #include <stdlib.h> #include <string.h> struct node { char c; struct node *lt, *rt; }; char s[100]; int i; struct node *creat() { struct node *root; root=(struct node *)malloc(sizeof(struct node)); if(s[i]==',') {i++; return NULL; } else{ root->c=s[i++]; root->lt=creat(); root->rt=creat(); } return root; } void ceng(struct node *root) { int out=0, in=0; struct node *p[100]; p[in++]=root; while(out<in) { if(p[out]){ printf("%c",p[out]->c); p[in++]=p[out]->lt; p[in++]=p[out]->rt; } out++; } } int main() { int t; scanf("%d",&t); while(t--) { i=0; scanf("%s",s); struct node *root; root=creat(); ceng(root); printf("\n"); } return 0; }