问题描述
给定一个二叉树和一个值sum,判断是否有从根节点到叶子节点的节点值之和等于sum 的路径。
输入描述:
输入一棵树
输出描述:
输出是否存在指定sum的路径
示例
示例1
输入
22
输出 (包含的路径:5->4->11->2)
true
解决思路
分析
- 通过递归判断所有的路径,只要包含返回true,不同路径之间是 || 的关系。
方法
- 递归判断是否包含指定和的路径
代码实现
// 思路1
public class Solution {
public boolean hasPathSum (TreeNode root, int sum) {
// write code here
if (root == null) {
return false;
}
if (root.left == null && root.right == null) {
return (sum - root.val == 0);
}
return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
}
}
小伙伴如果想测试的话,可以直接到牛客网这个链接做测试