1
/ \
2 3
/ \ \
4 5 6
/ \
7 8
運用bfs只能輸出1,2,3,4,5,6,7,8這個序列,並不知道分層資訊,因此如何分層列印呢?
我的方法就是對每乙個節點做以下判斷,如果該節點在佇列中的下乙個節點是是null說明該節點是樹在某一層的最後乙個節點,將該節點的子節點輸入佇列中之後,在輸入乙個null節點。
道理很簡單:每一層的最後乙個節點其子節點也必須是下一層的最後乙個節點。
**如下:
#include #include using namespace std;
struct treenode2;
void bfstreebylayer(treenode2* root)
}int main();
treenode2 t7 = ;
treenode2 t6 = ;
treenode2 t5 = ;
treenode2 t4 = ;
treenode2 t3 = ;
treenode2 t2 = ;
treenode2 t1 = ;
bfstreebylayer(&t1);
system("pause");
return 0;
}
程式設計之美 3 10 分層遍歷二叉樹
看到這本書就有一種高大上的感覺,隨手翻翻,今天又搞一道!首先,看到問題1我首先想到了圖的廣度優先搜尋遍歷演算法,後來一查書 資料結構高分筆記 才想起來樹本來就有一種遍歷方式叫 層次遍歷 p110 也就問題1中想要列印樹的方式。利用了資料結構 迴圈佇列 作為輔助的工具。其實自己想的時候也想到了用佇列的...
程式設計之美讀書筆記 3 10 分層遍歷二叉樹
3.10 分層遍歷二叉樹 看到milo寫的這篇文章 又翻了下書,發現書的 p253 有個瑕疵,每個節點值後面都會顯示乙個空格,如果將間隔字元改為 輸出的每行最後都有乙個 不能達到要求。不過,只要將 cout vec cur data 這行改為 if cur last 1 cout vec cur d...
3 10分層遍歷二叉樹 擴充套件問題
給定一棵二叉樹,要求按分層遍歷該二叉樹,即從上到下按層次訪問該二叉樹 每一層將單獨輸出一行 每一層要求訪問的順序為從左到右,並將節點依次編號。要求遍歷輸出的結果分別為圖2,圖3和圖4,其中圖3和圖4是擴充套件問題。圖1 圖2 圖3 圖4 程式設計之美書上,採用的是容器構成的陣列來實現的,相比於遞迴演...