您的位置:首页 > 其它

二叉树的层序遍历

2017-07-22 08:59 127 查看
题目:实现一颗二叉树的层序遍历,树的结点定义如下

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: