112. 路径总和
package Tree;
import java.util.HashMap;
import java.util.Map;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
/**
* 求 树的路径和
* <p>
* 递归 递减
* <p>
* 询问是否存在从*当前节点 root 到叶子节点的路径,满足其路径和为 sum*。
* <p>
* 假定从根节点到当前节点的值之和为 val,我们可以将这个大问题转化为一个小问题:是**否存在从当前节点的子节点到叶子的路径,满足其路径和为 sum - val**。
* <p>
* 不难发现这满足递归的性质,若当前节点就是叶子节点,那么我们直接判断 sum 是否等于 val 即可
*/
public class Letcode112 {
public boolean hasPathSum(TreeNode root, int targetSum) {
if (root == null) {
return false;
}
if (root.left == null && root.right == null) {
return root.val == targetSum;
}
return hasPathSum(root.left, targetSum - root.val) || hasPathSum(root.right, targetSum - root.val);
}
}