404.左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。
示例 1:

输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1]
输出: 0
提示:
- 节点数在
[1, 1000]范围内 -1000 <= Node.val <= 1000
判断当前节点是不是左叶子是无法判断的,必须要通过节点的父节点来判断其左孩子是不是左叶子,如果该节点的左节点不为空,该节点的左节点的左节点为空,该节点的左节点的右节点为空,则找到了一个左叶子。
具体代码实现如下:
java
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(3);
treeNode.left = new TreeNode(9);
treeNode.right = new TreeNode(20);
treeNode.right.left = new TreeNode(15);
treeNode.right.right = new TreeNode(7);
System.out.println(sumOfLeftLeaves(treeNode));
}
public static int sumOfLeftLeaves(TreeNode root) {
int res = 0;
res = dfs(root);
return res;
}
public static int dfs(TreeNode root){
if (root == null){
return 0;
}
if (root.left != null && root.left.left == null && root.left.right == null){ // 判断是否是左叶子
int right = dfs(root.right);
return root.left.val + right;
}
int left = dfs(root.left);
int right = dfs(root.right);
return left + right;
}
以上为记录分享用,代码较差请见谅