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

yuKeon·2023년 9월 7일
0

LeetCode

목록 보기
27/29
post-thumbnail

0. 문제

https://leetcode.com/problems/average-of-levels-in-binary-tree/description/?envType=study-plan-v2&envId=top-interview-150


1. 문제 설명

  • BST의 루트가 주어지면 각 depth별 평균 값을 담은 리스트를 반환하시오.

2. 문제 풀이

2.1. 접근법

  • BFS를 사용해서 모든 트리를 탐색한다.
  • 탐색 시 오른쪽에서 왼쪽 노드로 탐색한다.
  • 탐색이 끝나면 값을 리스트에 담는다.

3. 코드

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Double> averageOfLevels(TreeNode root) {
        List<Double> ans = new ArrayList<>();
        Queue<TreeNode> q = new LinkedList<>();

        q.add(root);

        while (!q.isEmpty()) {
            int size = q.size();
            double sum = 0;	
            
            for(int i = 0; i < size; i++) {
                TreeNode tmp = q.poll();
                if(tmp.left != null) q.add(tmp.left);
                if(tmp.right != null) q.add(tmp.right);

                sum += tmp.val;			
            }
            ans.add(sum/size);			
        }

        return res;
    }
}

4. 결과

0개의 댓글