列印容器 22 從上往下列印二叉樹

2021-10-12 21:44:46 字數 1147 閱讀 3272

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

1. 思路

舉例說明:

如上圖所示,因為按層列印的順序決定應該先列印根結點,所以我們從樹的根結點開始分析。為了接下來能夠列印值為8的結點的兩個子結點,我們應該在遍歷該結點時把值為6和10的兩個結點儲存到乙個容器裡,現在容器內就有兩個結點了。按照從左到右列印的要求,我們先取出為6的結點。列印出值6之後把它的值分別為5和7的兩個結點放入資料容器。此時資料容器中有三個結點,值分別為10、5和7。接下來我們從資料容器中取出值為10的結點。注意到值為10的結點比值為5、7的結點先放入容器,此時又比這兩個結點先取出,這就是我們通常說的先入先出,因此不難看出這個資料容器應該是乙個佇列。由於值為5、7、9、11的結點都沒有子結點,因此只要依次列印即可。

整個列印過程如下圖所示:

通過上面具體例子的分析,我們可以找到從上到下列印二叉樹的規律:每一次列印乙個結點的時候,如果該結點有子結點,則把該結點的子結點放到乙個佇列的末尾。接下來到佇列的頭部取出最早進入佇列的結點,重複前面的列印操作,直至佇列中所有的結點都列印出來為止。

推薦閱讀:

★ 求職經驗:點這裡

★ 演算法刷題:點這裡

★ 投資理財:點這裡

★ ai很簡單:

★ 掃盲科普:點這裡

22 從上往下列印二叉樹

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。題目思路 建立乙個temp佇列,將根節點放入到temp佇列中,從佇列中取元素,放入到res佇列中,當取元素時判斷取的元素有沒有子節點,如果有子節點,則將子節點加入到temp佇列中.python class solution def pr...

從上往下列印二叉樹

從上往下列印二叉樹需要乙個雙端佇列,stl提供了deque容器符合我們的要求,和測試 如下 include include include using namespace std struct binarytreenode binarytreenode createbinarytreenode in...

從上往下列印二叉樹

題目描述 從上往下列印出二叉樹的每個節點,同層節點從左至右列印。思路 用佇列儲存將要列印的節點,出佇列時,將左節點和右節點分別加入佇列當中,直到隊列為空,列印完畢。public arraylist integer printfromtoptobottom treenode root queue qu...