1. question: 左叶子之和(简单)
给定二叉树的根节点 root ,返回所有左叶子之和。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sum-of-left-leaves
示例 1:
1 2 3
| 输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
|
示例 2:
提示:
1 2
| 节点数在 [1, 1000] 范围内 -1000 <= Node.val <= 1000
|
2. answers
这道题需要注意的点是:左叶子。这个必须满足两个条件:叶子节点和左节点。
其实在遍历二叉树的时候,我们就能找到左节点,此时进一步判断是否是叶子节点即可。采用层序遍历,代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| public class Solution_0059 {
public static int sumOfLeftLeaves(TreeNode root) {
int sums = 0; Queue<TreeNode> queue = new LinkedList<>();
if(root != null) queue.offer(root);
while(queue.size() > 0) {
int length = queue.size();
while(length-- > 0) {
root = queue.poll();
if(root.left != null) { queue.offer(root.left);
if(root.left.left == null && root.left.right == null) sums += root.left.val; } if(root.right != null) queue.offer(root.right);
}
}
return sums; }
public static void main(String[] args) { System.out.println();
TreeNode tn5 = new TreeNode(7); TreeNode tn4 = new TreeNode(15); TreeNode tn3 = new TreeNode(20, tn4, tn5); TreeNode tn2 = new TreeNode(9); TreeNode tn1 = new TreeNode(3, tn2, tn3);
System.out.println(sumOfLeftLeaves(tn1));
} }
|
3. 备注
参考力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 (leetcode-cn.com),代码随想录 (programmercarl.com)。