Leetcode: Sum of Left Leaves
Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.
Recursion: 是不是left子数完全由bottom往上第二层决定,如果是left子树且是叶子节点,那么就是left leaves, parent得告诉child是不是在left子树
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public int sumOfLeftLeaves(TreeNode root) { 12 return helper(root, false); 13 } 14 15 public int helper(TreeNode cur, boolean isLeft) { 16 if (cur == null) return 0; 17 if (isLeft && cur.left==null && cur.right==null) return cur.val; 18 return helper(cur.left, true) + helper(cur.right, false); 19 } 20 }
BFS:
1 public class Solution { 2 public int sumOfLeftLeaves(TreeNode root) { 3 if(root == null || root.left == null && root.right == null) return 0; 4 5 int res = 0; 6 Queue<TreeNode> queue = new LinkedList<>(); 7 queue.offer(root); 8 9 while(!queue.isEmpty()) { 10 TreeNode curr = queue.poll(); 11 12 if(curr.left != null && curr.left.left == null && curr.left.right == null) res += curr.left.val; 13 if(curr.left != null) queue.offer(curr.left); 14 if(curr.right != null) queue.offer(curr.right); 15 } 16 return res; 17 } 18 }