Sum of Left Leaves

easy tree dfs bfs

Problem

Given the root of a binary tree, return the sum of all left leaves. A left leaf is a leaf that is the left child of its parent.

Inputroot = [3,9,20,null,null,15,7]
Output24
9 and 15 are left leaves. 9 + 15 = 24.

def sum_of_left_leaves(root):
    def dfs(node, is_left):
        if not node: return 0
        if not node.left and not node.right:
            return node.val if is_left else 0
        return dfs(node.left, True) + dfs(node.right, False)
    return dfs(root, False)
function sumOfLeftLeaves(root) {
  function dfs(node, isLeft) {
    if (!node) return 0;
    if (!node.left && !node.right) return isLeft ? node.val : 0;
    return dfs(node.left, true) + dfs(node.right, false);
  }
  return dfs(root, false);
}
class Solution {
    public int sumOfLeftLeaves(TreeNode root) {
        return dfs(root, false);
    }
    int dfs(TreeNode n, boolean isLeft) {
        if (n == null) return 0;
        if (n.left == null && n.right == null) return isLeft ? n.val : 0;
        return dfs(n.left, true) + dfs(n.right, false);
    }
}
class Solution {
public:
    int sumOfLeftLeaves(TreeNode* root) { return dfs(root, false); }
    int dfs(TreeNode* n, bool isLeft) {
        if (!n) return 0;
        if (!n->left && !n->right) return isLeft ? n->val : 0;
        return dfs(n->left, true) + dfs(n->right, false);
    }
};
Time: O(n) Space: O(h) recursion