//分层遍历二叉树(按层次从上往下,从左往右)
//以广度优先搜索(breath-first search, BFS)去遍历一个树结构.使用队列实现
//队列初始化,将根节点压入队列。当队列不为空,进行如下操作:
//弹出一个节点,访问,若左子节点或右子节点不为空,将其压入队列。
void printNodeByLevel(BinaryTree* pRoot)
{
//在一行内打印出
if(pRoot==NULL)
return;
queue<BinaryTree *> q;
q.push(pRoot);
while(!q.empty())
{
BinaryTree* btNode = q.front();
q.pop();
cout<<btNode->value<<" ";
if(btNode->left)
q.push(btNode->left);
if(btNode->right)
q.push(btNode->right);
}
}
void printNodeByLevelWithEndl(BinaryTree* pRoot)
{
//每一行打印二叉树的一层
if(pRoot==NULL)
return ;
queue<BinaryTree*> q;
q.push(pRoot);
q.push(0);
while(!q.empty())
{
BinaryTree* btNode = q.front();
q.pop();
if(btNode)
{
cout<<btNode->value<<" ";
if(btNode->left)
q.push(btNode->left);
if(btNode->right)
q.push(btNode->right);
}else if(!q.empty())
{
q.push(0);
cout<<endl;
}
}
}