struct TreeNode
{
int value;
TreeNode* pLeft;
TreeNode* pRight;
};
// 层序遍历 即从上到下逐层遍历树结构
/************************************************************************/
/*
1
/ \
2 3
/ \ / \
4 5 6 7
输出:1、2、3、4、5、6、7
*/
/************************************************************************/
void PrintTopToBottom(TreeNode* pTreeRoot)
{
//错误输入判断是必须的
if (!pTreeRoot)
{
return;
}
// 利用队列先进先出的存储方式,从顶层到底层遍历二叉树
deque<TreeNode*> dequeTreeNode;
// 根先压进队列 1 -> deque
dequeTreeNode.push_back(pTreeRoot);
// 从队列头部取一个节点,如果有叶子就在队列尾部按先左后右的顺序压队列
/************************************************************************/
/* 1 ->deque [1]
1<- deque
2、3 ->deque[2][3]
2<- deque[3]
4、5 -> deque[3][4][5]
*/
/************************************************************************/
while(dequeTreeNode.size())
{
TreeNode* pNode = dequeTreeNode.front();
dequeTreeNode.pop_front();
printf("%d",pNode->value);
if (pNode->pLeft)
{
dequeTreeNode.push_back(pNode->pLeft);
}
if (pNode->pRight)
{
dequeTreeNode.push_back(pNode->pRight);
}
}
}
*如果提示deque未定义的话需要增加#include <deque>