LeetCode 102 層次遍歷

2021-10-02 11:42:00 字數 712 閱讀 8023

一、思路

這道題使用的是二叉樹的廣度優先遍歷,也就是層次遍歷。與單純的層次遍歷不同的地方在於,這個問題要求返回的遍歷結果是乙個二維陣列,一行代表樹的一層。但是總的思路還是和層次遍歷沒有區別。

為了知道二叉樹中每乙個節點位於書的哪一層的問題需要標識每乙個節點所在的層數,並根據層次遍歷時的節點,對其子節點進行標識。在這裡我想到的方法有兩種:第一種是建乙個佇列儲存節點的層數,與層次遍歷的佇列保持一一對應;第二種是建乙個雜湊表,來實現每乙個節點和其層數之間的對應關係。這裡的標識方法甚至都可以使用線性表,但是考慮到查詢的效率太低,故不使用線性表。

二、**

class

solution

if(node-

>right)

if(depth == nowdepth)

else

// 每當到達新的一層將上一層的節點壓入ans陣列中

} ans.

push_back

(tem)

;// 注意最後還需要再將再壓一次ans

// 假設層數為m,當到達m+1層的時候,會直接跳出迴圈

// 所以沒有執行m層的壓ans操作

return ans;}}

;

LeetCode 102 二叉樹的層次遍歷

題目鏈結 題目描述 給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 解決方法 廣度優先 層次 遍歷,使用佇列實現 具體思路 在訪問了乙個節點之後...

LeetCode 102 二叉樹的層次遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回其層次遍歷結果 3 9,20 15,7 此題需要將各個層的節點分別儲存到不同的陣列中。所以在while迴圈中,加了乙個for迴圈,迴圈次數...

LeetCode102 二叉樹的層次遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回其層次遍歷結果 3 9,20 15,7 題解 這題就是傳統的層次遍歷,需要注意的一點就是每層到數字到儲存到乙個單獨的list裡面。層次遍歷...