문제 설명

Given the root of a binary tree, return the level order traversal of its nodes’ values. (i.e., from left to right, level by level).

Example 1

Input: root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
Output: 15

Example 2:

Input: root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]
Output: 19

Constraints:

  • The number of nodes in the tree is in the range [1, 10^4].
  • 1 <= Node.val <= 100

문제풀이

class Solution {
    func deepestLeavesSum(_ root: TreeNode?) -> Int {
        guard let root = root else { return 0 }
        
        var queue: [TreeNode] = [root]
        
        while !queue.isEmpty {
            var isLastDepth = true
            var sum = 0
            
            for _ in queue {
                let node = queue.removeFirst()
                
                if let leftNode = node.left {
                    isLastDepth = false
                    queue.append(leftNode)
                }
                
                if let rightNode = node.right {
                    isLastDepth = false
                    queue.append(rightNode)
                }
                
                sum += node.val
            }
            
            if isLastDepth { return sum }
        }
        
        return 0
    }
}

참고 : https://leetcode.com/problems/deepest-leaves-sum/