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