【面试题】二叉树的层序遍历

题目:实现一颗二叉树的层序遍历,树的结点定义如下:

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);
		}
	}
扫描二维码关注公众号,回复: 2684489 查看本文章

猜你喜欢

转载自blog.csdn.net/yaotengjian/article/details/81104575