Problem From.
https://leetcode.com/problems/maximum-level-sum-of-a-binary-tree/
오늘 문제는 binary Tree 에서 각 level 의 합을 구할때, 그 합이 가장 큰 레벨을 반환하는 문제였다.
먼저 BFS 로 탐색하면서 각 레벨의 합을 구하였다. 각 레벨의 합을 구하기위해, 한 레벨로 넘어갔을때 queue 의 크기만큼 반복문을 돌면서 queue 속의 원소를 빼내면서 합을 구해주었다.
/**
* Example:
* var ti = TreeNode(5)
* var v = ti.`val`
* Definition for a binary tree node.
* class TreeNode(var `val`: Int) {
* var left: TreeNode? = null
* var right: TreeNode? = null
* }
*/
import java.util.*
class Solution {
fun maxLevelSum(root: TreeNode?): Int {
var answer = 0
var level = 1
val queue : Queue<TreeNode> = LinkedList()
var prevSum = Integer.MIN_VALUE
var sum = 0
queue.add(root!!)
while(queue.isNotEmpty()) {
val repeat = queue.size
for(i in 0 until repeat) {
val node = queue.poll()
sum += node.`val`
node.left?.let {
queue.add(it)
}
node.right?.let {
queue.add(it)
}
}
if(sum > prevSum) {
prevSum = sum
answer = level
}
sum = 0
level += 1
}
return answer
}
}