112. Path Sum

DFS

time: O(n)
space: O(n)

public class Solution {
    public boolean hasPathSum(TreeNode root, int sum) {
        if (root == null) return false;
        if (root.left == null && root.right == null) {
            return sum - root.val == 0;
        } else {
            return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
        }
    }
}

其实可以剪枝。找到一个之后就不用找另一边了。

public class Solution {
    public boolean hasPathSum(TreeNode root, int sum) {
        if (root == null) return false;
        if (root.left == null && root.right == null) {
            return sum - root.val == 0;
        } else {
            boolean left = hasPathSum(root.left, sum - root.val);
            if (left) return true;
            boolean right = hasPathSum(root.right, sum - root.val);
            return right;
        }
    }
}

仔细一想好像又不用。。
|| 运算左边满足右边不会算的。。。

posted @ 2016-11-05 11:48  哇呀呀..生气啦~  阅读(98)  评论(0)    收藏  举报