1. 程式人生 > >按層次遍歷二叉樹演算法

按層次遍歷二叉樹演算法

問題:按層次遍歷二叉樹

在網上看了一些按層次遍歷二叉樹的演算法,這裡修改了一下通過佇列來按層次遍歷二叉樹的演算法

-------------------------------------------------------

網上說的通過佇列來實現的解釋是:

設定一個佇列,然後只要佇列不為空,將對首元素的左右孩子加入佇列(如果左右孩子不為空),然後將佇列的首元素出對即可


流程如下:


注:圖片來源網路

為了避免大材小用,用單向佇列簡簡單單,清清淡淡。

#include
#include
using namespace std;
void PrintAtLevel(Tree T) {
	queue myqueue;
	myqueue.push(T);
	while (!myqueue.empty()) {
		Tree tmp = myqueue.front();
		if (tmp->lchild != NULL)
			myqueue.push(tmp->lchild);
		if (tmp->rchild != NULL)
			myqueue.push(tmp->rchild);
		cout << tmp->value << " ";
		myqueue.pop();
	}
}