404. Sum of Left Leaves
- Total Accepted: 8223
- Total Submissions: 17874
- Difficulty: Easy
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.
给你一棵二叉树,求所有左叶子节点的和
题不难,不过还是学到了一点东西,&&和&的区别,错了三发才意识到这个问题,&&是顺序判断表达式,如果有一个错了,就立刻返回false,而&则是判断所有表达式
DFS:
BFS:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public int sumOfLeftLeaves(TreeNode root) { if(root == null) return 0; int ans = 0; if(root.left != null && root.left.left == null && root.left.right ==null){ ans = root.left.val; } return ans + sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right); } }
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ import java.util.*; public class Solution { public int sumOfLeftLeaves(TreeNode root) { int ans = 0; Queue<TreeNode>q = new LinkedList<TreeNode>(); if(root == null) return 0; q.clear(); q.add(root); while(!q.isEmpty()){ TreeNode temp = q.poll(); if(temp.left != null && temp.left.left == null && temp.left.right == null){ ans += temp.left.val; } if(temp.left != null) q.add(temp.left); if(temp.right != null) q.add(temp.right); } return ans; } }