數據結構(30)層次遍歷

圖30-1所示爲二叉樹的層次遍歷,即按照箭頭所指方向,按照1,2,3,4的層次順序,對二叉樹中的各個結點進行訪問。

          圖30-1  二叉樹的層次遍歷 

要進行層次遍歷,需要藉助一個隊列。先將二叉樹根結點入隊,然後出隊,訪問出隊結點,若它有左子樹,則將左子樹根節點入隊;若它有右子樹,則將右子樹根節點入隊。然後出隊,訪問出隊結點......如此反覆,直至隊列爲空。

二叉樹的層次遍歷算法如下:

template<typename DataType>
inline void BinaryTree<DataType>::LevelOrder(BTNode<DataType>* root)
{
	queue<BTNode<DataType> *> que;
	BTNode<DataType> *p;
	que.push(root);
	while (!que.empty())
	{
		p = que.front();
		cout << p->data << " ";
		que.pop();
		if (p->LChild)
		{
			que.push(p->LChild);
		}
		if (p->RChild)
		{
			que.push(p->RChild);
		}
	}
	cout << endl;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章