题目:
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.
思路:用sum减去当前节点的值,直到遇到一个叶子节点,并且此时差值为0。在做题的时候,我犯了一个错误,忽略了叶子节点的定义。
叶子节点是度数为0的节点。
代码AC:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean hasPathSum(TreeNode root, int sum) {
if(root == null)
return false;
else if(root.val == sum && root.left==null && root.right == null)
return true;
else
return (hasPathSum(root.left, sum-root.val) ||
hasPathSum(root.right, sum-root.val));
}
}