[LeetCode] 1161. Maximum Level Sum of a Binary Tree(Kotlin)
풀이
- 트리 너비 우선 순회 문제
- root의 level이 1임에 주의 -> return할 때 +1 해주기
import java.util.Deque
class Solution {
fun maxLevelSum(root: TreeNode?): Int {
val levelSum = mutableListOf<Long>()
val q = ArrayDeque<Pair<TreeNode?, Int>>()
q.addLast(Pair(root, 0))
while(!q.isEmpty()){
val curNode = q.first().first
val curLevel = q.first().second
q.removeFirst()
if(curNode == null) continue
if(levelSum.size <= curLevel) levelSum.add(curNode.`val`.toLong())
else levelSum[curLevel] = levelSum[curLevel] + curNode.`val`.toLong()
if(curNode.left != null) q.addLast(Pair(curNode.left, curLevel+1))
if(curNode.right != null) q.addLast(Pair(curNode.right, curLevel+1))
}
return levelSum.indexOf(levelSum.max()) + 1
}
}