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
输出层序遍历最好用的是bfs
#include <iostream>
#include <bits/stdc++.h>
#include <queue>
using namespace std;
int t;
struct node
{
char data;
node *ltree;
node *rtree;
};
node *creat(char s[],node *root)
{
root=new node;
root->data=s[t++];
if(root->data==',')
{
return NULL;
}
else
{
root->ltree=creat(s,root->ltree);
root->rtree=creat(s,root->rtree);
}
return root;
}
void cengxu(node *root)
{
node *h;
queue<node *>q;
q.push(root);
while(!q.empty())
{
h=q.front();
q.pop();
if(h)
{
cout << h->data;
q.push(h->ltree);
q.push(h->rtree);
}
}
}
int main()
{
int a;
char s[55];
cin >> a;
while(a--)
{
t=0;
cin >> s;
node *root;
root=creat(s,root);
cengxu(root);
cout << endl;
}
return 0;
}