//使用队列
void Print (BinaryTreeNode * pRoot)
{
if (NULL == pRoot)
return;
std::queue<BinaryTreeNode *> nodes;
nodes.push(pRoot); //将根节点插入队列
int nextLevel = 0;
int toBePrinted = 1;
while(!nodes.empty())
{
BinaryTreeNode *pNode = nodes.front(); //取出、打印根节点
cout << pNode->m_nValue;
if (NULL != pNode->m_pLeft)
{
nodes.push(pNode->m_pLeft);
++nextLevel;
}
if (NULL != pNode->m_pRight)
{
nodes.push(pNode->m_pRight);
++nextLevel;
}
nodes.pop();
--toBePrinted;
if (0 == toBePrinted)
{
cout << endl;
toBePrinted = nextLevel;
nextLevel = 0;
}
}
}