题目描述
题目难度:Easy
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
Note: A leaf is a node with no children.
AC代码
要注意判断条件:
只有当前节点是叶子节点且根节点到叶子节点和为sum才返回true。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private boolean hasPathSum = false;
public boolean hasPathSum(TreeNode root, int sum) {
if(root == null) return hasPathSum;
hasPathSum(root, sum, 0);
return hasPathSum;
}
private void hasPathSum(TreeNode root, int sum, int cur){
if(root == null) return;
if(root.left == null && root.right == null) {
if(cur + root.val == sum){
hasPathSum = true;
return;
}
}
hasPathSum(root.left, sum, cur + root.val);
hasPathSum(root.right, sum, cur + root.val);
}
}