[ LeetCode | Java ] 637. Average of Levels in Binary Tree

dokim·2023년 9월 11일
0
post-thumbnail

🏷️637. Average of Levels in Binary Tree


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;
    }

    // BFS 탐색
    public void bfs(TreeNode root){

        // root가 null인 경우 예외처리
        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 탐색에 대한 이해도가 올라갔지만 몇 번 더 복습을 하면서 익숙하게 사고할 수 있도록 하는 것이 좋을 것 같다는 생각이 들었습니다.

0개의 댓글