* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
bool hasPathSum(TreeNode* root, int sum) {
// write code here
if(!root){
return false; //如果根为空,直接返回false
}
if(root->val == sum && root->left == nullptr && root->right == nullptr){
return true; //根结点正好等于sum 并且左右子树都为空,说明找到最后一层(叶子结点)满足当前的路径和。
}
// 继续递归左子树或者右子树,只要能满足这种情况就为true, 此时递归到后面,就要跟着减去根的值 直到找到某个叶子结点的值正好等于传入的(还差的值)sum.
return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right,sum - root->val);
}
};