按層次遍歷二叉樹演算法
阿新 • • 發佈:2019-02-04
問題:按層次遍歷二叉樹
在網上看了一些按層次遍歷二叉樹的演算法,這裡修改了一下通過佇列來按層次遍歷二叉樹的演算法
-------------------------------------------------------
網上說的通過佇列來實現的解釋是:
設定一個佇列,然後只要佇列不為空,將對首元素的左右孩子加入佇列(如果左右孩子不為空),然後將佇列的首元素出對即可
流程如下:
注:圖片來源網路
為了避免大材小用,用單向佇列簡簡單單,清清淡淡。
#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(); } }