思路:递归解决

往下走的时候将sum减去本节点的值,一路减下去,到了叶子节点如果和叶子节点的值相等,则该路径的和与sum相等。

C++版本

class Solution {
public:
    bool hasPathSum(TreeNode* root, int sum) {
        // write code here
        if(!root) return false;
        if(!root->left && !root->right && sum == root->val){
            return true;
        }
        return hasPathSum(root->left, sum-root->val) || hasPathSum(root->right, sum-root->val);
        
    }
};

python版本

class Solution:
    def hasPathSum(self , root: TreeNode, sum: int) -> bool:
        # write code here
        if not root:
            return False
        if not root.left and not root.right and root.val == sum:
            return True
        return self.hasPathSum(root.left, sum-root.val) or self.hasPathSum(root.right, sum-root.val)