#include<iostream>
#include<queue>
using namespace std;
struct Node
{
Node* left;
Node* right;
char data;
};
/* 初始化一棵树 */
Node* initTree()
{
Node *root = new Node;
Node *b = new Node;
Node* c = new Node;
Node* d = new Node;
Node* e = new Node;
Node* f = new Node;
root->data = 'a';
c->data = 'c';
b->data = 'b';
d->data = 'd';
e->data = 'e';
f->data = 'f';
root->left = b;
root->right = c;
b->left = d;
b->right = e;
c->right = f;
c->left = NULL;
d->left = e->left = f->left = NULL;
d->right = e->right = f->right = NULL;
return root;
}
void printTreebyRow(Node* root)
{
queue<Node *> storequeue;
storequeue.push(root);
while(!storequeue.empty())
{
int rowcount=0;
queue<Node *> showqueue(storequeue);
while(!showqueue.empty())
{
cout<<showqueue.front()->data;
showqueue.pop();
++rowcount;
}
cout<<endl; // 回车
while(rowcount)
{
if(storequeue.front()->left)
storequeue.push(storequeue.front()->left);
if(storequeue.front()->right)
storequeue.push(storequeue.front()->right);
storequeue.pop();
--rowcount;
}
}
}
int main()
{
printTreebyRow(initTree());
return 0;
}