程式設計之美 3 10 分層遍歷二叉樹

2021-06-09 13:50:23 字數 802 閱讀 7514

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 程式設計之美書上,採用的是容器構成的陣列來實現的,相比於遞迴演...