class
solution
; vector<
int> res;
queue> que;
que.
push
(root)
;while
(!que.
empty()
)return res;}}
;
1.常規寫法:o(n):遍歷n個結點,o(n):需要乙個佇列和乙個一維陣列,最壞情況下平衡二叉樹時,佇列所需空間為n/2,而一維陣列所需的空間是結點最多的那一層;
class
solution
; vectorint>
> res;
vector<
int> layer;
//重複利用,每存完一層就放入結果集res中,並清空用於下一層使用
queue> que;
que.
push
(root)
;while
(!que.
empty()
) res.
push_back
(layer)
; layer.
clear()
;}return res;}}
;
2.yxc的寫法:o(n):同上,o(n):同上
無需每層for迴圈,但為了區分每層,需要在每層結束後需要入隊乙個nullptr標記,其實還不如方法1易懂
class
solution
; vectorint>
> res;
vector<
int> layer;
queue> que;
que.
push
(root)
; que.
push
(nullptr)
;//每一層的結束入隊乙個nullptr
while
(!que.
empty()
)else
}return res;}}
;
class
solution
; vectorint>
> res;
vector<
int> layer;
queue> que;
que.
push
(root)
;while
(!que.
empty()
)if(res.
size()
%2)reverse
(layer.
begin()
, layer.
end())
;//將偶數層逆序
res.
push_back
(layer)
; layer.
clear()
;}return res;}}
;
2.yxc的寫法:個人感覺不如方法1
相當於再題目二的基礎上,再多設定乙個bool標記當前層是從左到右還是從右到左;
class
solution
; vectorint>
> res;
vector<
int> layer;
queue> que;
que.
push
(root)
; que.
push
(nullptr)
;//每一層的結束入隊乙個nullptr
bool l2r =
true
;//true代表從左到右,false代表從右到左
while
(!que.
empty()
)else
}return res;}}
;
劍指offer 32 從上到下列印二叉樹
宣告 本系列部落格是對何海濤 劍指offer 的關鍵點總結。從上到下列印出二叉樹的每乙個結點,同一層的結點按照從左到右的順序列印。如二叉樹 8 6 5,7 10 9,11 列印出8 6 10 5 7 9 11 1 使用佇列儲存要訪問的結點 2 從根結點開始,每次列印結點的時候,如果該結點有子結點,則...
劍指offer 32 從上到下列印二叉樹
2.分行從上到下列印二叉樹 3.之字形列印二叉樹 從上到下列印出二叉樹的每乙個節點,同一層的節點按照從左到右的順序列印 上圖中的二叉樹,則依次列印出 8,6,10,5,7,9,11 bfs 廣度優先搜尋 先擴充套件根節點 再依次擴充套件根節點的左右兒子,也就是從左到右擴充套件第二層節點 再依次從左到...
Python劍指offer 分行從上到下列印二叉樹
從上到下按層列印二叉樹,同一層的節點按照從左到右 的順序列印,每一層列印到第一行,例如本題中上乙個問題的二叉樹 輸出形式會是 86 10 5 7 9 11 這道題和前面一道題十分類似,也可以用乙個佇列來儲存要列印的節點。為了把二叉樹的每一行單獨列印到一行裡,我們需要兩個變數 乙個變數表示當前層中還沒...