题目链接:力扣
思路:bfs一层一层求和,当没有下一层的时候(就是队列为empty的时候)就是最后一层,记录下结果即可。
上代码:
/**
* 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
* }
*/
class Solution {
fun deepestLeavesSum(root: TreeNode?): Int {
val queue = LinkedList<TreeNode>()
var result = 0
root?.let { queue.add(it) }
while (queue.isNotEmpty()) {
var currentSize = queue.size
var tmpResult = 0
while (currentSize-- > 0) {
val tmp = queue.poll()
if (tmp.left == null && tmp.right == null) {
tmpResult += tmp.`val`
} else {
tmp.left?.let { queue.add(it) }
tmp.right?.let { queue.add(it) }
}
}
if (queue.isEmpty()) {
result = tmpResult
}
}
return result
}
}