一、题目


二、思路
- 如果根节点为空,则返回 false。
- 如果根节点不为空,且为叶子节点,表明已经找到一条完整的路径,只需返回
root.val == targetSum。- 根节点不为叶子节点,继续往下搜索。由于已经搜索过 root 了,只需要检查路径上剩余节点的总和是否为
targetSum - root.val。所以先targetSum -= root.val再递归检查hasPathSum(root.left, targetSum)hasPathSum(root.right, targetSum)。
- 根节点不为叶子节点,继续往下搜索。由于已经搜索过 root 了,只需要检查路径上剩余节点的总和是否为
三、代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean hasPathSum(TreeNode root, int targetSum) {
if (root == null) {
return false;
}
if (root.left == null && root.right == null) {
return root.val == targetSum;
}
targetSum -= root.val;
return hasPathSum(root.left, targetSum) || hasPathSum(root.right, targetSum);
}
}
772

被折叠的 条评论
为什么被折叠?



