Deepest Leaves Sum
Advertisement
Problem
Return the sum of values of its deepest leaves.
Solutions
# Python
from collections import deque
def deepestLeavesSum(root):
q = deque([root])
while q:
level_sum = sum(node.val for node in q)
next_level = []
for node in q:
if node.left: next_level.append(node.left)
if node.right: next_level.append(node.right)
if not next_level:
return level_sum
q = deque(next_level)
return 0
// C++
int deepestLeavesSum(TreeNode* root) {
queue<TreeNode*> q; q.push(root);
int sum = 0;
while (!q.empty()) {
sum = 0; int sz = q.size();
while (sz--) { auto n=q.front();q.pop(); sum+=n->val; if(n->left)q.push(n->left); if(n->right)q.push(n->right); }
}
return sum;
}
// Java
public int deepestLeavesSum(TreeNode root) {
Queue<TreeNode> q = new LinkedList<>(); q.add(root); int sum=0;
while (!q.isEmpty()) { sum=0; int sz=q.size();
while(sz-->0){TreeNode n=q.poll();sum+=n.val;if(n.left!=null)q.add(n.left);if(n.right!=null)q.add(n.right);}
}
return sum;
}
// JavaScript
function deepestLeavesSum(root) {
let queue = [root];
while (queue.length) {
const next = queue.flatMap(n => [n.left, n.right].filter(Boolean));
if (!next.length) return queue.reduce((s, n) => s + n.val, 0);
queue = next;
}
return 0;
}
Complexity
- Time: O(n), Space: O(n)
Advertisement
← Previous
Cousins in Binary TreeNext →
Add One Row to Tree