大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn
文章目录
404. 左叶子之和
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
分析
深度优先遍历二叉树,由于需要判断该节点是左孩子还是右孩子,所以采用fPath
来标记。
如果子结点是父结点的左孩子,记录1,如果是右孩子,记录-1,判断每个叶子结点的记录:如果为1就添加进结果。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int sum = 0;
public int sumOfLeftLeaves(TreeNode root) {
if (root == null) return 0;
dfs(root, 0);
return sum;
}
//fPaht:记录父节点到子结点的路径——1:左孩子, -1:右孩子
public void dfs(TreeNode root, int fPath) {
if (root.left == null && root.right == null && fPath == 1)
sum += root.val;
if (root.left != null)
dfs(root.left, 1);
if (root.right != null)
dfs(root.right, -1);
}
}
提交结果
2020年9月19日更
大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn