본문 바로가기
Leetcode

637. Average of Levels in Binary Tree

by Doromi 2024. 4. 18.
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
반응형

'Leetcode' 카테고리의 다른 글

222. Count Complete Tree Nodes  (0) 2024.04.22
530. Minimum Absolute Difference in BST  (0) 2024.04.21
98. Validate Binary Search Tree  (0) 2024.04.17
2089. Find Target Indices After Sorting Array  (0) 2024.03.27
162. Find Peak Element  (0) 2023.11.16