404. 左叶子之和(一般)

计算给定二叉树的所有左叶子之和。

示例:

    3
   / \
  9  20
    /  \
   15   7

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-left-leaves

思路:

注意两点:

  • 总和为:左子左叶+右子左叶
  • 左子树的定义

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
//左子左叶+右子左叶
if(root==null){
return 0;
}
int left = sumOfLeftLeaves(root.left);
int right = sumOfLeftLeaves(root.right);
//左子树定义
int sum =0;
if(root.left!=null && root.left.left==null && root.left.right==null){
sum += root.left.val;
}
//左子左叶+右子左叶
int res = sum+left+right;
return res;
}
}