Average of Levels in Binary Tree - LeetCode
이진트리의 root가 주어졌을 때 각 레벨의 평균값을 담은 List를 반환하라.
예를 들어 [3, 9, 29, null, null, 15, 7]의 트리라면 레벨 1은 3.00000, 레벨 2는 (9 + 29) / 2 = 14.5000, 레벨 3은 (15 + 7) / 2 = 11.00000 이 된다.
레벨별로 어떤 노드들이 존재하는지를 파악해야 한다.
큐를 통해 해결할 수 있을 것 같다.
- 루트 노드를 큐에 넣는다.
- 큐에서 노드를 꺼낸다.
- left, right를 보고 자식의 개수를 기록한다.
- 자식들을 큐에 넣는다.
- 반복을 통해 자식의 개수만큼 큐에서 꺼내면서 평균을 계산한다.
- 자식들을 큐에 넣고 다음 반복에서는 이번에 기록된 자식의 개수만큼 처리를 한다.
/**
* 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) {
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
List<Double> result = new ArrayList<>();
double sum = 0.0;
int cnt = 1;
while (!q.isEmpty()) {
int count = 0;
for (int i = 0; i < cnt; i++) {
TreeNode node = q.poll();
sum += node.val;
if (node.left != null) {
q.add(node.left);
count++;
}
if (node.right != null) {
q.add(node.right);
count++;
}
}
result.add(sum / cnt);
sum = 0;
cnt = count;
}
return result;
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 433 - Minimum Genetic Mutation (0) | 2024.10.22 |
---|---|
LeetCode 2 - Add Two Numbers (2) | 2024.10.22 |
LeetCode 230 - Kth Smallest Element in a BST (0) | 2024.10.21 |
LeetCode 11053 - 가장 긴 증가하는 부분 수열 (0) | 2024.10.18 |
LeetCode 205 - Isomorphic Strings (0) | 2024.10.18 |