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
|
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); } }
|
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; }
|