1. 程式人生 > >佇列實現二叉樹層序遍歷

佇列實現二叉樹層序遍歷

//基本資料結構
template<class T>
struct BinaryTreeNode
{
	T _data;
	BinaryTreeNode<T>* _left;
	BinaryTreeNode<T>* _right;
	BinaryTreeNode(const T& x)
		:_data(x)
		,_left(NULL)
		,_right(NULL)
	{
	}
};
//層序遍歷,佇列實現
void _LevelOrder(Node* root)
{
	Node* cur=root;
	queue<Node*> q;  //模板型別為Node*,佇列存放指標
	if(cur)
		q.push(cur);
	while(!q.empty())
	{
		Node* _front=q.front();
		q.pop();
		cout<<_front->_data<<" ";
		if(_front->_left)
			q.push(_front->_left);
		if(_front->_right)
			q.push(_front->_right);
	}
}