0
点赞
收藏
分享

微信扫一扫

46、LeetCode-404.左叶子之和

题目描述:给定二叉树的根节点 root ,返回所有左叶子之和。

思路

主要就是左叶子节点的判断,要用到父节点!第一次不容易想到!

代码

1)递归实现

class Solution {
    //这里的sum也要用,成员变量,不然作为形参,sum值一直变化?
    private int sum = 0;
    public int sumOfLeftLeaves(TreeNode root) {
        if(root == null) return sum;
        dfs(root);
        return sum;
    }
    //递归判断是否为左叶子节点
    //要通过父节点来进行判断,因为父节点才能判断当前节点是否是 左子节点
    void dfs(TreeNode root){
        //此节点为 左叶子节点
        if(root.left != null && root.left.left == null && root.left.right == null){
            sum += root.left.val;
            //这里不能返回,不然同一层的右节点进不去!
        }
        if(root.left != null) dfs(root.left);
        if(root.right != null) dfs(root.right);
    }
}
举报

相关推荐

0 条评论