数据结构实验之二叉树五:层序遍历
Time Limit: 1000MS
Memory Limit: 65536KB
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 #include<stdio.h> #include<stdlib.h> #define max 100 int k; char st[60]; struct node { char date; struct node *lchild, *rchild; }; struct node *creat() { char ch; struct node *T; ch = st[k++]; if(ch == ',') T = NULL; else { T = (struct node *)malloc(sizeof(struct node)); T -> date = ch; if(T) { T -> lchild = creat(); T -> rchild = creat(); } } return T; } void put(struct node *r) { struct node *que[100]; int i=0,j=0; que[j++]=r; while(i<j) { if(que[i]) { if(que[i] -> lchild != NULL)que[j++]=que[i]->lchild; if(que[i] -> rchild != NULL)que[j++]=que[i]->rchild; printf("%c",que[i]->date); } i++; } } int main() { int t; scanf("%d", &t); struct node *T; while(t--) { scanf("%s", st); k = 0; T = creat(); put(T); printf("\n"); } return 0; }