题目描述
思路分析
求解从 root 到叶子节点是否存在路径和为 sum 的路径 hasPathSum(root, sum)。
可以转换成
求解从 root.left 或者 root.right 到叶子节点是否存在路径和为 sum - root.val 的路径,即
hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val) 。
代码实现
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x){
val=x;
}
}
public class HasPathSum {
public boolean hasPathSum(TreeNode root,int sum) {
if (root==null) {
return false;
}
// 到达叶子节点时,递归终止,判断 sum 是否符合条件。
if (root.left==null&&root.right==null) {
return root.val==sum;
}
// 递归地判断root节点的左孩子和右孩子。
return hasPathSum(root.left, sum-root.val)||hasPathSum(root.right, sum-root.val);
}
}