102. Binary Tree Level Order Traversal
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root: # root 없으면
return []
res = []
q = deque([root])
# level = 0
while len(q) > 0:
sub = []
# print('level: ', level)
for _ in range(len(q)):
node = q.popleft()
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
sub.append(node.val)
res.append(sub)
# level+=1
return res
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
# bfs -> 큐로
if not root:
return []
res = []
que = deque([root])
while(que):
l = len(que)
sub = []
for i in range(l):
node = que.popleft()
sub.append(node.val)
if node.left:
que.append(node.left)
if node.right:
que.append(node.right)
res.append(sub)
return res
최종 코드
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
# 레벨마다 다른 list로.. -> BFS 너비우선탐색
res = []
if not root:
return res
def bfs(node):
level=0
q = deque([node])
while q:
sub_res = []
for i in range(len(q)):
# 꺼내고 출력
n = q.popleft()
sub_res.append(n.val)
if n.left:
q.append(n.left)
if n.right:
q.append(n.right)
res.append(sub_res)
level +=1
bfs(root)
return res'LeetCode > NeetCode' 카테고리의 다른 글
| [Backtracking: Subset 부분집합] 90. Subsets II (0) | 2025.01.19 |
|---|---|
| [Backtracking: Subset 부분집합] 78. Subsets (0) | 2025.01.19 |
| DFS: 94. Binary Tree Inorder Traversal (1) | 2025.01.15 |
| [DP: Unbounded Knapsack] 983. Minimum Cost For Tickets (0) | 2025.01.13 |
| [DP: Unbounded Knapsack] 518. Coin Change II ★★★★★ (0) | 2025.01.08 |