按行打印二叉树,每行后面回车

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值