너비우선탐색(BFS)을 활용한 알고리즘 문제풀이
입출력
- 입력: 정수의 val을 가지는 이진트리가 주어집니다.
- 출력: 가장 깊은 레벨의 리프 노드들의 합을 구합니다.
예제 코드
import java.util.*;
class Solution {
public int deepestLeavesSum(TreeNode root) {
int answer = -1;
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
while(!q.isEmpty()) {
int size = q.size();
int tmp = 0;
for (int i = 0; i < size; i++) {
TreeNode cq = q.poll();
if (cq.left != null) q.offer(cq.left);
if (cq.right != null) q.offer(cq.right);
tmp += cq.val;
}
if (q.isEmpty()) answer = tmp;
}
return answer;
}
}
- LinkedList를 활용하여 각 레벨별 노드를 저장하였습니다.
- BFS 알고리즘을 활용하여 각 레벨별 합 및 다음 레벨 존재여부를 확인하였습니다.
회고
- 꾸준히 해나가야하는데, 일정을 잘 조율하여 진행해야겠다는 생각이 듭니다.