Leetcode

637. Average of Levels in Binary Tree

Doromi 2024. 4. 18. 11:57
728x90
반응형

이진 트리의 각 레벨에 있는 노드들의 평균 값을 계산하는 문제입니다. 

이진 트리의 루트가 주어지면, 각 레벨의 노드들의 평균 값을 배열 형태로 반환해야 합니다.이진 트리의 각 레벨에 있는 노드들의 평균 값을 계산하는 문제입니다. 이진 트리의 루트가 주어지면, 각 레벨의 노드들의 평균 값을 배열 형태로 반환해야 합니다. 실제 답과 10^-5 이내의 오차는 허용됩니다.

 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
public class Solution {
    public IList<double> AverageOfLevels(TreeNode root) {
        IList<double> result = new List<double>();
        Queue<TreeNode> queue = new Queue<TreeNode>();
        queue.Enqueue(root);

        long sum = 0,count = 0;
        while(queue.Count > 0){
            Queue<TreeNode> temp = new Queue<TreeNode>();

            while(queue.Count > 0){
                TreeNode node = queue.Dequeue();
                sum += node.val;
                count++;

                if(node.left != null){
                    temp.Enqueue(node.left);
                }
                if(node.right != null){
                    temp.Enqueue(node.right);
                }
            }
            queue = temp;
            result.Add((double)sum/count);
            sum = 0;
            count = 0;
        }
        return result;
    }
}
BFS 탐색을 기본으로 하여 Queue 를 사용하는 아이디어를 떠올렸고, 
각 Level마다 평균을 구하기 위해서 Temp라는 Queue 를 사용해 그다음 자식들만 담을 수 있는 queue를 하나 선언하였다.
이후에, 한 level의 탐색이 끝나면 main queue를 temp queue로 대체하여 다음 level의 탐색을 시작한다.
728x90
반응형