#include<bits/stdc++.h>
using namespace std;
typedef struct bitnode{
char data;
struct bitnode *lchild,*rchild;
}Bitnode;
Bitnode *creatbittree(Bitnode *T){
char ch;
scanf("%c",&ch);
if(ch=='#') T=NULL;
else{
if(!(T=(Bitnode*)malloc(sizeof(Bitnode)))) exit(1);
T->data=ch;
T->lchild=creatbittree(T->lchild);
T->rchild=creatbittree(T->rchild);
}
return T;
}
int visit(char a){
printf("%c",a);
return 1;
}
int Preorder(Bitnode *T){
if(T){
if(visit(T->data)){
if(Preorder(T->lchild)){
if(Preorder(T->rchild)) return 1;
}
}
return 0;
}
else return 1;
}
void printNodeByLevel(Bitnode *root)
{
if(root == NULL)
return;
vector<Bitnode *> vec;
vec.push_back(root);
int cur = 0;
int last = 1;
while(cur < vec.size()) {
last = vec.size();
while(cur < last) {
cout<<vec[cur]->data;
if(vec[cur]->lchild!= NULL)
vec.push_back(vec[cur]->lchild);
if(vec[cur]->rchild != NULL)
vec.push_back(vec[cur]->rchild);
++cur;
}
}
}
int main()
{
Bitnode *b=NULL;
b=creatbittree(b);
printNodeByLevel(b);
return 0;
}