题目:
从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印.
思路:
借助一个队列,先输出头节点,并把他的左右结点进队列,取队头,这个结点就是跟节点的左结点,输出并且把它的左右节点进队列. 因为队列是先进先出,所以到最后输出的就是按层次遍历的结果.
void PrintFromTopToBottom(BinaryTreeNode* pTreeRoot)
{
if (pTreeRoot == NULL)
return;
queue<BinaryTreeNode*> NodePointer;
NodePointer.push(pTreeRoot);
while (!NodePointer.empty())
{
BinaryTreeNode* pNode = NodePointer.front();
printf("%d ",pNode->m_nValue);
NodePointer.pop();
if (pNode->m_pLeft)
NodePointer.push(pNode->m_pLeft);
if (pNode->m_pRight)
NodePointer.push(pNode->m_pRight);
}
}