题目描述
给定二叉树,从上到下打印每个节点的值,同一层的节点按照从左到右的顺序打印。如下图二叉树,则打印结果顺序为:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15。
代码实现
需要使用一个队列做辅助数据结构:
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};
void printByLayer(BinaryTreeNode* pTreeRoot)
{
if (!pTreeRoot)
return;
//定义队列,将根节点入队. #include<deque>
deque<BinaryTreeNode *> dequeTreeNode;
dequeTreeNode.push_back(pTreeRoot);
//打印
while (dequeTreeNode.size())
{
BinaryTreeNode* pNode = dequeTreeNode.front();
dequeTreeNode.pop_front();
//实际题目注意输出格式
cout << pNode->m_nValue << endl;
if (pNode->m_pLeft)
{
dequeTreeNode.push_back(pNode->m_pLeft);
}
if (pNode->m_pRight)
{
dequeTreeNode.push_back(pNode->m_pRight);
}
}
}