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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tomwildboar/article/details/86001428

文章优先发表在个人博客

http://www.xdx97.com/#/single?bid=319a1505-45da-c757-8b69-c11e1dc8072d

胡扯:这个题的确见证了我的进步,连续刷了几天的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;
    }
}

猜你喜欢

转载自blog.csdn.net/Tomwildboar/article/details/86001428
今日推荐