按层遍历一棵二叉树,规律为从根节点开始,每访问一个节点时,如果该节点有子节点,则将子节点放到一个队列的末尾,接下来依次从队列头部取出元素,直到队列为空。
//================================================================== // 《剑指Offer——名企面试官精讲典型编程题》代码 // 作者:何海涛 //================================================================== // 面试题32(一):不分行从上往下打印二叉树 // 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。 #include <cstdio> #include "..UtilitiesBinaryTree.h" #include <deque> void PrintFromTopToBottom(BinaryTreeNode* pRoot) { if (pRoot == nullptr) return; std::deque<BinaryTreeNode *> dequeTreeNode; dequeTreeNode.push_back(pRoot); while (dequeTreeNode.size()) { BinaryTreeNode *pNode = dequeTreeNode.front(); dequeTreeNode.pop_front(); printf("%d ", pNode->m_nValue); if (pNode->m_pLeft) dequeTreeNode.push_back(pNode->m_pLeft); if (pNode->m_pRight) dequeTreeNode.push_back(pNode->m_pRight); } }