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.
原题链接: http://oj.leetcode.com/problems/path-sum/
这是一道送分题,我却做得有点复杂了。
这题答案的第一句if (root == null) return false;
是有玄机的,只要是null返回false就行了,不用管sum。
我想的是,root.left或者root.right不为null,sum<0 或者它们都为null了,sum却>0的情况才返回false,实际上它没这么复杂的判断,只需要在false的时候判断一下sum就行了。
这题还要注意的是sum减去的是root.val而不是left或right的val。
public boolean hasPathSum(TreeNode root, int sum) {
if (root == null) return false;
if (root.left == null && root.right == null && sum == root.val) return true;
return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
}