前序遍历累加路径和即可,注意两点:
- 要在叶子节点判断是否等于目标和,非叶子节点达到了不行
- 可能出现空树,这时即使sum为0也为false(都不存在路径谈何路径和)
class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if (root==null) return false;
if (root.left == null && root.right == null) {
if (sum == root.val) return true;
else return false;
}
return hasPathSum(root.left, sum - root.val)
|| hasPathSum(root.right, sum - root.val);
}
}