File tree 4 files changed +33
-27
lines changed
solution/0100-0199/0102.Binary Tree Level Order Traversal
4 files changed +33
-27
lines changed Original file line number Diff line number Diff line change 46
46
47
47
** 方法一:BFS**
48
48
49
+ 我们可以使用 BFS 的方法来解决这道题。首先将根节点入队,然后不断地进行以下操作,直到队列为空:
50
+
51
+ - 遍历当前队列中的所有节点,将它们的值存储到一个临时数组 $t$ 中,然后将它们的孩子节点入队。
52
+ - 将临时数组 $t$ 存储到答案数组中。
53
+
54
+ 最后返回答案数组即可。
55
+
56
+ 时间复杂度 $O(n)$,空间复杂度 $O(n)$。其中 $n$ 是二叉树的节点个数。
57
+
49
58
<!-- tabs:start -->
50
59
51
60
### ** Python3**
60
69
# self.left = left
61
70
# self.right = right
62
71
class Solution :
63
- def levelOrder (self , root : TreeNode) -> List[List[int ]]:
64
- if root is None :
65
- return []
72
+ def levelOrder (self , root : Optional[TreeNode]) -> List[List[int ]]:
66
73
ans = []
74
+ if root is None :
75
+ return ans
67
76
q = deque([root])
68
77
while q:
69
78
t = []
@@ -172,14 +181,13 @@ public:
172
181
* Right *TreeNode
173
182
* }
174
183
*/
175
- func levelOrder(root *TreeNode) [][]int {
176
- var ans [][]int
184
+ func levelOrder(root *TreeNode) (ans [][]int) {
177
185
if root == nil {
178
- return ans
186
+ return
179
187
}
180
- var q = []*TreeNode{root}
188
+ q : = []*TreeNode{root}
181
189
for len(q) > 0 {
182
- var t []int
190
+ t := []int{}
183
191
for n := len(q); n > 0; n-- {
184
192
node := q[0]
185
193
q = q[1:]
@@ -193,7 +201,7 @@ func levelOrder(root *TreeNode) [][]int {
193
201
}
194
202
ans = append(ans, t)
195
203
}
196
- return ans
204
+ return
197
205
}
198
206
```
199
207
Original file line number Diff line number Diff line change 52
52
# self.left = left
53
53
# self.right = right
54
54
class Solution :
55
- def levelOrder (self , root : TreeNode) -> List[List[int ]]:
56
- if root is None :
57
- return []
55
+ def levelOrder (self , root : Optional[TreeNode]) -> List[List[int ]]:
58
56
ans = []
57
+ if root is None :
58
+ return ans
59
59
q = deque([root])
60
60
while q:
61
61
t = []
@@ -162,14 +162,13 @@ public:
162
162
* Right *TreeNode
163
163
* }
164
164
*/
165
- func levelOrder(root *TreeNode) [][]int {
166
- var ans [][]int
165
+ func levelOrder(root *TreeNode) (ans [][]int) {
167
166
if root == nil {
168
- return ans
167
+ return
169
168
}
170
- var q = []*TreeNode{root}
169
+ q : = []*TreeNode{root}
171
170
for len(q) > 0 {
172
- var t []int
171
+ t := []int{}
173
172
for n := len(q); n > 0; n-- {
174
173
node := q[0]
175
174
q = q[1:]
@@ -183,7 +182,7 @@ func levelOrder(root *TreeNode) [][]int {
183
182
}
184
183
ans = append(ans, t)
185
184
}
186
- return ans
185
+ return
187
186
}
188
187
```
189
188
Original file line number Diff line number Diff line change 6
6
* Right *TreeNode
7
7
* }
8
8
*/
9
- func levelOrder (root * TreeNode ) [][]int {
10
- var ans [][]int
9
+ func levelOrder (root * TreeNode ) (ans [][]int ) {
11
10
if root == nil {
12
- return ans
11
+ return
13
12
}
14
- var q = []* TreeNode {root }
13
+ q : = []* TreeNode {root }
15
14
for len (q ) > 0 {
16
- var t []int
15
+ t := []int {}
17
16
for n := len (q ); n > 0 ; n -- {
18
17
node := q [0 ]
19
18
q = q [1 :]
@@ -27,5 +26,5 @@ func levelOrder(root *TreeNode) [][]int {
27
26
}
28
27
ans = append (ans , t )
29
28
}
30
- return ans
29
+ return
31
30
}
Original file line number Diff line number Diff line change 5
5
# self.left = left
6
6
# self.right = right
7
7
class Solution :
8
- def levelOrder (self , root : TreeNode ) -> List [List [int ]]:
9
- if root is None :
10
- return []
8
+ def levelOrder (self , root : Optional [TreeNode ]) -> List [List [int ]]:
11
9
ans = []
10
+ if root is None :
11
+ return ans
12
12
q = deque ([root ])
13
13
while q :
14
14
t = []
You can’t perform that action at this time.
0 commit comments