BFS λ BFS μΈλ° κΉμ΄ λ³λ‘ 무μΈκ° νλ λ¬Έμ κ° μμμκ·Έλλ κΉμ΄ λ³λ‘ μμ μ μμνκΈ° μ , λμ μ²λ¦¬λ₯Ό ν΄μ£Όλ©΄ λ¨
κΈ°λ‘ν΄λκ³ μΆμ건 queue λͺ¨λμ μ°κΈ° μ«μ λλ κ·Έλ₯ 리μ€νΈμλ€ append νκ³ ν λ² reverse ν΄μ κ³μ pop νλ©΄ λλ¦ FIFO λλ λκ² μΈ μ μλ€λκ±°.
import queue
class Solution:
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
res = []
if not root:
return res
q = [root]
while q:
level_roots = []
childs = []
q.reverse()
while q:
node = q.pop()
level_roots.append(node.val)
if node.left:
childs.append(node.left)
if node.right:
childs.append(node.right)
res.append(level_roots)
q = childs
return res