力扣: 左叶子之和java

力扣: 左叶子之和java

力扣: 左叶子之和java_第1张图片

思路:

1.使用后序遍历,返回左右子树的节点之和,一层一层向上传递。
三部曲
返回值和参数:返回int值为该子树的左叶子节点之和,参数为根节点
结束条件:空接节点返回0
单层递归从逻辑:递归函数分别计算左右子树的左叶子和计算左子树时 ,要判断一次该节点的左孩子为空并且是叶子节点,则左子树的值为该左孩子的值。最后返回左右子树的值相加。

代码

class Solution {
    
    public int sumOfLeftLeaves(TreeNode root) {//主函数
        
        return sumOf(root);
    }
    public int sumOf(TreeNode node){//递归函数
        if(node == null) return 0;//结束条件,节点为空或子节点,返回0,因为此节点一定没有左孩子的叶子节点
        if(node.left == null&&node.right == null) return 0;
        int sL = sumOf(node.left);//计算左子树的左叶子节点和
        if(node.left != null &&node.left.left == null&&node.left.right == null){//判断该节点是否满足该题所说的,有左叶子节点,就将值进行赋值
            sL = node.left.val;
        }
        int sR = sumOf(node.right);//计算右子树的左叶子节点和
        int sum = sL+sR;//计算左右子树的和
        return sum;

    }
}

你可能感兴趣的:(java,leetcode,算法)