题目:实现一颗二叉树的层序遍历,树的结点定义如下
typedef struct TreeNode
{
TreeNode(char data)
:_pleft(NULL)
, _pright(NULL)
, _data(data)
{}
TreeNode *_pleft;
TreeNode *_pright;
char _data;
}Node;
实现思路 采用队列辅助,先将树的根节点入队,
如果队列不空,则进入循环
{
输出首元素
如果该队首元素有左孩子,则将其左孩子入队;
如果该队首元素有右孩子,则将其右孩子入队;
将队首元素出对}
实现代码
void Leverorder(Node *pRoot)
{
if (NULL == pRoot)
return;
Node *pCur = pRoot;
queue<Node*> q;
q.push(pCur);
while (!q.empty())
{
Node *pFront = q.front();
cout << pFront->_data;
if (pFront->_pleft)
q.push(pFront->_pleft);
if (pFront->_pright)
q.push(pFront->_pright);
q.pop();
}
}