原题参见july大神博客系列【微软面试100题】
题目描述:输入一个二叉树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
分析思路:其实就是二叉树的层序遍历,二叉树的层序遍历就是使用队列,先将根结点入队,然后作以下循环直到队列为空:第一个结点出队列并打印,将当前结点的左右孩子入队(如果有的话)。
代码如下:
void PrintBinaryTree(NodeTree* pRoot)
{
if (NULL == pRoot)
return;
queue<NodeTree* > buf;
buf.push(pRoot);
while(!buf.empty())
{
NodeTree* currentNode = buf.front();
buf.pop();
printf("%d\n", currentNode->m_nValue);
if(current->pLeft != NULL) buf.push(current->pLeft);
if(current->pRight != NULL) buf.push(current->pRight);
}
}