Skip to content

Commit db6c5f1

Browse files
committed
binary-tree-level-order-traversal solution
1 parent dbefdfa commit db6c5f1

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
8+
from collections import deque
9+
10+
class Solution:
11+
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
12+
13+
# BFS(ํ ์‚ฌ์šฉ)
14+
# ์‹œ๊ฐ„๋ณต์žก๋„ O(n), ๊ณต๊ฐ„๋ณต์žก๋„ O(n)
15+
16+
if not root:
17+
return []
18+
19+
# ํ์— root๋…ธ๋“œ ์ถ”๊ฐ€(์ดˆ๊ธฐํ™”)
20+
q = deque([root])
21+
answer = []
22+
23+
# ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰(๋ชจ๋“  ๋…ธ๋“œ ํƒ์ƒ‰)
24+
while q:
25+
level = [] # ํ˜„์žฌ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ
26+
27+
for _ in range(len(q)): # ํ˜„์žฌ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ๋…ธ๋“œ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต
28+
node = q.popleft() # ํ์—์„œ ๋…ธ๋“œ ๊บผ๋‚ด์„œ
29+
level.append(node.val) # level์— ์ €์žฅ
30+
31+
# ์ž์‹ ๋…ธ๋“œ๋“ค์ด ์žˆ๋‹ค๋ฉด ํ์— ์ถ”๊ฐ€
32+
if node.left:
33+
q.append(node.left)
34+
if node.right:
35+
q.append(node.right)
36+
37+
# ํ˜„์žฌ ๋ ˆ๋ฒจ answer์— ์ถ”๊ฐ€
38+
answer.append(level)
39+
40+
return answer

0 commit comments

Comments
ย (0)