- 题目:一个二叉树,求是否存在从根节点到叶子节点的一条路径,使得路径的节点之和等于sum
- 难度:Easy
- 思路:
- 看完题目,第一时间想到的是通过回溯来求各个路径的和,但是这个思路对于没有指向父节点的指针的树,不好求解。(关注点在节点之和)
- 看到Discuss里用的通过递归对每个子节点进行hasPathSum判断来求解,显然换一个关注点,解题容易很多。(关注点在于剩下的sum)
- 代码:
public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if(root == null){
return false;
}
if(root.left == null && root.right == null && sum-root.val == 0){
return true;
}
return hasPathSum(root.left, sum-root.val) || hasPathSum(root.right, sum - root.val);
}
}