DESC:
题目描述
给定一个二叉树和一个值 sum,判断是否有从根节点到叶子节点的节点值之和等于 sum的路径,
例如:
给出如下的二叉树, sum=22,
返回true,因为存在一条路径 5→4→11→2的节点值之和为 22示例1
输入
{1,2},0
返回值
false
示例2
输入
{1,2},3
返回值
true
CODE:
JAVA:
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @param sum int整型 * @return bool布尔型 */ public boolean hasPathSum (TreeNode root, int sum) { if (root == null) { return false; } // write code here return dfs(root, sum, 0); } public boolean dfs(TreeNode node, int target, int sumNow) { if (node == null) { return false; } sumNow += node.val; if (node.left == null && node.right == null) { if (sumNow == target) { return true; } else { return false; } } else { //左右子树有一个满足即可 return dfs(node.left, target, sumNow) || dfs(node.right, target, sumNow); } } }
NOTES:
- dfs,注意怎么返回传递,非叶子节点返回左右子树的结果或集,即左右子树有一方满足即为true