Daily LeetCode Challenge - 1161. Maximum Level Sum of a Binary Tree

Min Young Kim·2023년 6월 15일
0

algorithm

목록 보기
173/198

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
    }
}
profile
길을 찾는 개발자

0개의 댓글