Skip to content

Commit 51458b5

Browse files
committed
四刷102
1 parent 64070d9 commit 51458b5

File tree

3 files changed

+78
-20
lines changed

3 files changed

+78
-20
lines changed

docs/0102-binary-tree-level-order-traversal.adoc

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
[#0102-binary-tree-level-order-traversal]
2-
= 102. Binary Tree Level Order Traversal
2+
= 102. 二叉树的层序遍历
33

4-
{leetcode}/problems/binary-tree-level-order-traversal/[LeetCode - Binary Tree Level Order Traversal^]
4+
https://leetcode.cn/problems/binary-tree-level-order-traversal/[LeetCode - 102. 二叉树的层序遍历 ^]
55

6-
这个题其实很简单,只要保持需要读取值的那一层的节点就可以了。
7-
8-
Given a binary tree, return the _level order_ traversal of its nodes' values. (ie, from left to right, level by level).
9-
10-
11-
For example:
12-
13-
14-
Given binary tree `[3,9,20,null,null,15,7]`,
6+
给你二叉树的根节点 `root` ,返回其节点值的 *层序遍历* 。(即逐层地,从左到右访问所有节点)。
157

8+
*示例 1:*
169

1710
[subs="verbatim,quotes,macros"]
1811
----
@@ -23,21 +16,34 @@ Given binary tree `[3,9,20,null,null,15,7]`,
2316
15 7
2417
----
2518

19+
....
20+
输入:root = [3,9,20,null,null,15,7]
21+
输出:[[3],[9,20],[15,7]]
22+
....
2623

27-
return its level order traversal as:
24+
*示例 2:*
2825

26+
....
27+
输入:root = [1]
28+
输出:[[1]]
29+
....
2930

30-
[subs="verbatim,quotes,macros"]
31-
----
32-
[
33-
[3],
34-
[9,20],
35-
[15,7]
36-
]
37-
----
31+
*示例 3:*
32+
33+
....
34+
输入:root = []
35+
输出:[]
36+
....
37+
38+
*提示:*
39+
40+
* 树中节点数目在范围 `[0, 2000]`
41+
* `+-1000 <= Node.val <= 1000+`
3842
3943
== 思路分析
4044

45+
这个题其实很简单,只要保持需要读取值的那一层的节点就可以了。
46+
4147
image:images/0102-00.png[]
4248

4349
[[src-0102]]
@@ -69,6 +75,15 @@ include::{sourcedir}/_0102_BinaryTreeLevelOrderTraversal_2.java[tag=answer]
6975
include::{sourcedir}/_0102_BinaryTreeLevelOrderTraversal_3.java[tag=answer]
7076
----
7177
--
78+
79+
三刷::
80+
+
81+
--
82+
[{java_src_attr}]
83+
----
84+
include::{sourcedir}/_0102_BinaryTreeLevelOrderTraversal_4.java[tag=answer]
85+
----
86+
--
7287
====
7388

7489
TIP: TODO:还可以优化成只用一个队列对象,思考如何实现?

logbook/202503.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ endif::[]
9090
|{doc_base_url}/0023-merge-k-sorted-lists.adoc[题解]
9191
|✅ 多路归并
9292

93+
|{counter:codes2503}
94+
|{leetcode_base_url}/binary-tree-level-order-traversal/[102. Binary Tree Level Order Traversal^]
95+
|{doc_base_url}/0102-binary-tree-level-order-traversal.adoc[题解]
96+
|✅ 广度优先搜索
97+
9398
|===
9499

95100
截止目前,本轮练习一共完成 {codes2503} 道题。
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.diguage.algo.leetcode;
2+
3+
import com.diguage.algo.util.TreeNode;
4+
5+
import java.util.*;
6+
7+
public class _0102_BinaryTreeLevelOrderTraversal_4 {
8+
// tag::answer[]
9+
/**
10+
* @author D瓜哥 · https://www.diguage.com
11+
* @since 2025-03-31 07:31:39
12+
*/
13+
public List<List<Integer>> levelOrder(TreeNode root) {
14+
if (root == null) {
15+
return Collections.emptyList();
16+
}
17+
List<List<Integer>> result = new LinkedList<>();
18+
Queue<TreeNode> queue = new LinkedList<>();
19+
queue.offer(root);
20+
while (!queue.isEmpty()) {
21+
int size = queue.size();
22+
List<Integer> level = new ArrayList<>(size);
23+
for (int i = 0; i < size; i++) {
24+
TreeNode node = queue.poll();
25+
level.add(node.val);
26+
if (node.left != null) {
27+
queue.offer(node.left);
28+
}
29+
if (node.right != null) {
30+
queue.offer(node.right);
31+
}
32+
}
33+
result.add(level);
34+
}
35+
return result;
36+
}
37+
// end::answer[]
38+
}

0 commit comments

Comments
 (0)