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;
}
}
}
仔细一想好像又不用。。
|| 运算左边满足右边不会算的。。。

浙公网安备 33010602011771号