반응형
https://leetcode.com/problems/find-largest-value-in-each-tree-row
level별 탐색하는 BFS 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 탐색을 진해할 deque변수 dq를 선언 후 root를 넣어줍니다.
2. level별 최댓값을 반환할 max_values를 선언 후 빈 배열로 초기화해줍니다.
📔 풀이과정
dq에 원소가 존재하는 동안 while loop를 수행하며 다음을 진행합니다.1. 현 dq의 size를 구해줍니다. 이는 즉 자식의 node 개수를 의미합니다.
2. 각 자식들이 가지는 원소들을 비교해 최댓값을 저장할 변수 max_value를 선언해줍니다.
3. size만큼 for loop를 수행하며 자식 노드들의 원소를 비교하며 dq에서 popleft해줍니다.
4. for loop 수행후 현 level의 최댓값 max_value를 max_values에 append해줍니다.
📔 정답 출력 | 반환
max_values를 반환합니다.
📕 Code
📔 Python3
from collections import deque
# 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 largestValues(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
dq = deque([root])
max_values = []
while dq:
size = len(dq)
max_value = float('-inf')
for i in range(size):
node = dq.popleft()
max_value = max(max_value,node.val)
if node.left:
dq.append(node.left)
if node.right:
dq.append(node.right)
max_values.append(max_value)
return max_values
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.