File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ from collections import deque
2
+ from typing import List , Optional
3
+
4
+
5
+ class TreeNode :
6
+ def __init__ (self , val = 0 , left = None , right = None ):
7
+ self .val = val
8
+ self .left = left
9
+ self .right = right
10
+
11
+
12
+ class Solution :
13
+ def levelOrder (self , root : Optional [TreeNode ]) -> List [List [int ]]:
14
+ """
15
+ - Idea: ๋๋น ์ฐ์ ํ์(BFS)๋ฅผ ์ด์ฉํ์ฌ ์ด์ง ํธ๋ฆฌ๋ฅผ ๋จ๊ณ ๋ณ๋ก ์ํํ๋ค.
16
+ - Time Complexity: O(n). n์ ํธ๋ฆฌ์ ๋
ธ๋ ์.
17
+ ๋ชจ๋ ๋
ธ๋๋ฅผ ํ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ฏ๋ก O(n) ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
18
+ - Space Complexity: O(n). n์ ํธ๋ฆฌ์ ๋
ธ๋ ์.
19
+ ๊ฐ์ฅ ์๋ ๋จ๊ณ์ ์๋ ๋
ธ๋๋ฅผ ์ ์ฅํ ๋ ๊ฐ์ฅ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ , ์ด๋ n์ ๋น๋กํ๊ธฐ ๋๋ฌธ์ O(n) ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค.
20
+ """
21
+ if not root :
22
+ return []
23
+
24
+ result = []
25
+ queue = deque ()
26
+ queue .append (root )
27
+
28
+ while queue :
29
+ level = []
30
+
31
+ for i in range (len (queue )):
32
+ node = queue .popleft ()
33
+ level .append (node .val )
34
+
35
+ if node .left :
36
+ queue .append (node .left )
37
+ if node .right :
38
+ queue .append (node .right )
39
+
40
+ result .append (level )
41
+
42
+ return result
You canโt perform that action at this time.
0 commit comments