路径总和 【 leetcode - 112 - 简单】

 

 

胡扯:这个题的确见证了我的进步,连续刷了几天的dfs了,从开始的不知如何下手,到这个一次提交以打败 100% 通过,开心。

 

 思路:

    1、日常非空判断

    2、遍历求和。

    3、如果是叶子节点就判断当前节点的和,是否等于 所求的和

 

代码: 可以打开下面的注释 查看每一个节点的和

 

class Solution {
    boolean flag = false;
    int total = 0;
    void dfs (TreeNode root,int current){


//        System.out.println(root.val + " : " + current);
        if ( root.left == null && root.right == null ){     //判断是不是叶子节点
            if (current == total)
                flag = true;
        }
        if (root.left != null)
            dfs(root.left,current + root.left.val);
        if (root.right != null)
            dfs(root.right,current + root.right.val);
    }

    public boolean hasPathSum(TreeNode root, int sum) {
        if (root == null)
            return false;
        total = sum;
        dfs(root,root.val);
        return flag;
    }
}

 

全部评论

相关推荐

吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务