LeetCode102 二叉樹的層級遍歷

2021-09-29 02:00:11 字數 858 閱讀 7945

題目大意:

給定乙個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。

例如:給定二叉樹: [3,9,20,null,null,15,7],

3/ \

9  20

/  \

15   7

返回其層次遍歷結果:

[[3],

[9,20],

[15,7]

]這個用遞迴很容易實現,下面詳解一下非遞迴實現。

既然是層級遍歷,自然需要佇列。

核心思想與步驟:

在迴圈外將當前層級的節點入隊(也就是入隊root節點)

進入迴圈(比如while迴圈),遍歷佇列的節點,將每乙個節點出隊的同時,入隊他的子節點。

只要執行完第二步,佇列還不為空,則重複第二步,否則退出迴圈。

至此問題解決。

**如下:

/**

* 層級列印

*/public list> levelorder(treenode root)

queuequeue = new linkedlist<>();

queue.add(root);//入隊根節點

list> result = new arraylist<>();

while (!queue.isempty())

if(poll.right != null)

}result.add(list);

}return result;

}

問題解決。

貼一下執行效率

LeetCode 102 二叉樹的遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 返回其層次遍歷結果 如下 definition for a binary tree node.public class treenode public class solution list res new ...

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迴圈,迴圈次數...