题目
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
分析
题目要求路径必须由根节点到叶节点,就让题目简单了很多,递归一直查到叶节点即可。递归出口有两个,到达叶节点,并且路径和为sum,返回true;到达null节点,返回false
题解
递归
public boolean hasPathSum(TreeNode root, int sum) {
if(root == null) return false;
else if(root.left == null && root.right == null && sum==root.val) return true; // 到叶节点并且sum等于叶节点的值
else return hasPathSum(root.left,sum-root.val) || hasPathSum(root.right,sum-root.val); // 没到叶节点
}