Deepest Leaves Sum

Sanjeev SharmaSanjeev Sharma
1 min read

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

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro