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 |