1. 문제 설명
- 이진 트리의 경우, 각 레벨 별 할당량의 평균 값을 배열로 유지하시기 바랍니다. 실제 답과 10^-5 범위 내에서 차이는 답안이 허용됩니다.



2. 접근 방법
- 이진 트리 탐색을 위해 BFS로 순회하며 각 level의 평균값을 구하여 list에 저장하는 방식으로 해결하였습니다.
- 먼저 저장할
list를 전역 변수로 선언하고 BFS 탐색을 합니다.
- 이진 트리를 탐색하면서 level단위로 평균값을 내어
list에 저장합니다.
3. 구현 코드
class Solution {
List<Double> list = new ArrayList<>();
public List<Double> averageOfLevels(TreeNode root) {
bfs(root);
return list;
}
public void bfs(TreeNode root){
if(root == null)
return;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int len = queue.size();
double sum = 0;
for(int i = 0; i < len; i++ ){
TreeNode node = queue.poll();
sum += node.val;
if (node.left != null)
queue.offer(node.left);
if(node.right != null)
queue.offer(node.right);
}
list.add(sum/len);
}
}
}
4. 최종 회고
- 이번 문제와 비슷한 형식의 문제로 복습하는 느낌으로 풀 수 있었습니다. BFS 탐색에 대한 이해도가 올라갔지만 몇 번 더 복습을 하면서 익숙하게 사고할 수 있도록 하는 것이 좋을 것 같다는 생각이 들었습니다.