leetcode 404 Sum of Left Leaves
z

Find the sum of all left leaves in a given binary tree.

Example:

1
2
3
4
5
6
7
    3
/ \
9 20
/ \
15 7

There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if (root == null)
return 0;
return helper(root, false);
}

public int helper(TreeNode root, boolean isLeft) {
if (root == null)
return 0;
if (isLeft && root.left == null && root.right == null)
return root.val;
return helper(root.left, true) + helper(root.right, false);
}
}
  • Using stack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int sumOfLeftLeaves(TreeNode<Integer> root) {
int res = 0;
if (root == null) return res;
Stack<TreeNode<Integer>> stack = new Stack<>();
while (root != null || !stack.isEmpty()) {
while (root != null) {
stack.push(root);
root = root.right;
}
root = stack.pop();
root = root.left;
if (root != null && root.left == null && root.right == null) res += root.val;
}
return res;
}