数据结构实验之二叉树五:层序遍历
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic Discuss
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
Hint
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
typedef struct st
{
char data;
struct st*l,*r;
}tree;
char a[51];
int i;
tree*create()
{
tree*t;
if(a[++i]== ',')
t=NULL;
else
{
t=(tree*)malloc(sizeof(tree));
t->data=a[i];
t->l=create();
t->r=create();
}
return t;
}
void cengci(tree*t)
{
queue<tree*>q;
q.push(t);
while(!q.empty())
{
t=q.front();
q.pop();
if(t)
{
cout<<t->data;
q.push(t->l);
q.push(t->r);
}
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
i=-1;
cin>>a;
tree*t;
t=create();
cengci(t);
cout<<endl;
}
return 0;
}