1302. Deepest Leaves Sum

package LeetCode_1302

import java.util.*

/**
 * 1302. Deepest Leaves Sum
 * https://leetcode.com/problems/deepest-leaves-sum/
 * Given a binary tree, return the sum of values of its deepest leaves.
 *
 * Constraints:
1. The number of nodes in the tree is between 1 and 10^4.
2. The value of nodes is between 1 and 100.
 * */
class TreeNode(var `val`: Int) {
    var left: TreeNode? = null
    var right: TreeNode? = null
}

class Solution {
    /*
    * solution: BFS, calculating sum of tree by level by level, there is the result when reach last level,
    * Time complexity: O(n), Space complexity: O(n)
    * */
    fun deepestLeavesSum(root: TreeNode?): Int {
        if (root == null) {
            return 0
        }
        var result = 0
        val queue = LinkedList<TreeNode>()
        queue.offer(root)
        while (queue.isNotEmpty()) {
            val size = queue.size
            //reset for calculating for next level
            result = 0
            for (i in 0 until size) {
                val cur = queue.pop()
                result += cur.`val`
                if (cur.left != null) {
                    queue.offer(cur.left)
                }
                if (cur.right != null) {
                    queue.offer(cur.right)
                }
            }
        }
        return result
    }
}

 

posted @ 2020-11-10 17:49  johnny_zhao  阅读(38)  评论(0编辑  收藏  举报