题目描述
思路 1
public class Solution {
private int sum;
private boolean res = false;
public boolean hasPathSum(TreeNode root, int sum) {
this.sum = sum;
helper(root, 0);
return res;
}
public void helper(TreeNode root, int accum) {
if (root == null) {
return;
}
if (root.left == null && root.right == null) {
if (accum + root.val == sum) {
res = true;
return;
}
}
helper(root.left, accum + root.val);
helper(root.right, accum + root.val);
}
}
思路 2(答案)
class Solution {
public:
bool hasPathSum(TreeNode *root, int sum) {
if (root == nullptr) {
return false;
}
if (root->left == nullptr && root->right == nullptr) {
return sum == root->val;
}
return hasPathSum(root->left, sum - root->val) ||
hasPathSum(root->right, sum - root->val);
}
};
本题是求和,但是巧妙利用减法,省去了开一个新的工具函数。