一.题目:
从上往下打印二叉树的每个结点,同一层的节点按照从左到右的顺序打印。
二.分析:
通过STL中的deque实现(两端都可以进出的队列)
三.答案:
void PrintFromTopToBottom(BinaryTreeNode* pTreeRoot) {
if (!pTreeRoot) {
return;
}
std::deque<BinaryTreeNode *> dequeTreeNode;
dequeTreeNode.push_back(pTreeRoot);
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);
} else {
dequeTreeNode.push_back(pNode->m_pRgiht);
}
}
}
四.相关题目:
如果广度优先遍历一个有向图