1.题目描述
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。
2.思路
假设我们有如下二叉树:
5/ \4 8/ / \11 13 4/ \ \
7 2 1
(1)步骤如下
3.代码实现
/*** 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;}//判断是不是叶子节点,检查当前节点 root 是否是叶子节点。叶子节点是指没有左右子节点的节点。如果 root 是叶子节点,那么就判断当前节点的值 root.val 是否等于 targetSum。如果等于,说明找到了符合条件的路径,返回 true;否则返回 false。if(root.left==null&&root.right==null){return root.val==targetSum;}int remain=targetSum-root.val;return hasPathSum(root.left,remain)||hasPathSum(root.right,remain);}
}