404.左叶子之和

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

示例:

1
2
3
4
5
6
7
    3
/ \
9 20
/ \
15 7

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

Solution

左叶子,那就只添加左孩子的左孩子为空以及左孩子的右孩子为空的节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
private int nums = 0; // 用于累加左叶子节点的值

public void dfs(TreeNode root) {
if (root == null) return; // 如果节点为空,直接返回

// 如果当前节点的左节点是叶子节点
if (root.left != null && root.left.left == null && root.left.right == null) {
nums += root.left.val; // 将左叶子节点的值加到nums上
}

// 递归遍历左右子树
dfs(root.left);
dfs(root.right);
}

public int sumOfLeftLeaves(TreeNode root) {
dfs(root); // 从根节点开始进行深度优先搜索
return nums; // 返回所有左叶子节点的值之和
}
}