左叶子之和

132 阅读1分钟

该题解运用后序递归(左右中)的方法,注意判断左叶子结点时要从root结点进行判断。

力扣题目链接

public int sumOfLeftLeaves(TreeNode root) {
    if (root == null) {
        return 0;
    }
    if (root.left == null && root.right == null) {
        return 0;
    }
    int leftNum = sumOfLeftLeaves(root.left);
    //注意:判断左叶子结点时要从root结点进行判断
    //条件一:root结点的左节点不为空
    //条件二:root结点的左结点为子节点
    if (root.left != null && root.left.left == null && root.left.right == null) {
        leftNum = root.left.val;
    }
    int rightNum = sumOfLeftLeaves(root.right);
    //左叶子之和 = 左子树的左叶子数 + 右子树的左叶子数
    return leftNum + rightNum;
}