文章目录
题目
计算给定二叉树的所有左叶子之和。
解题思路
第一步:找到叶子节点
第二步:判断叶子节点是不是左叶子节点。可以给help参数加一个isLeft来标识。
当递归的是左子树的时候那么就是true,右子树为false
代码
class Solution {
int sum=0;
public int sumOfLeftLeaves(TreeNode root) {
if(root==null){
return sum;
}
help(root,false);//根节点不可能是左叶子节点,所以直接传个false
return sum;
}
public void help(TreeNode root ,boolean isLeft){
if(root==null){
return ;
}
if(root.left==null&&root.right==null&&isLeft){//是否为左叶子节点
sum+=root.val;
}
help(root.left,true);//因为是遍历的左子树,所以叶子节点肯定是左叶子节点
help(root.right,false);//因为是遍历的右子树,所以叶子节点肯定不是左叶子节点
}
}