참고
문제해설
문제 로직고민
NOTE
•
이전 문제에서 동일레벨에 대해 순환하는 방식인 BFS를 그대로 활용하면 된다.
◦
BFS를 활용해서 Queue의 크기와, 동일레벨 순회를 통해 평균값을 구한다.
작성코드
NOTE
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
List<Double> result = new ArrayList();
if(root == null) return result;
Queue<TreeNode> queue = new LinkedList();
queue.add(root);
while(!queue.isEmpty()){
int size = queue.size();
double sum = 0;
for(int i =0; i<size; i++){
TreeNode node = queue.poll();
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
sum += node.val;
}
result.add(sum/size);
}
return result;
}
}
Java
복사
정답코드
NOTE
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
LinkedList<Double> res = new LinkedList<Double>();
if(root == null) return res;
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while(queue.size() != 0){
int size = queue.size();
double sum = 0;
for(int i = 0; i < size; i++){
TreeNode temp = queue.poll();
sum += temp.val;
if(temp.left != null) queue.add(temp.left);
if(temp.right != null) queue.add(temp.right);
}
res.add(sum/ size);
}
System.gc();
return res;
}
}
Java
복사
메모리를 가장 적게 사용하는 코드
•
System.gc()이외에는 놀라울정도로 코드가 동일해서 참고만 했다.