思路:递归解决
往下走的时候将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)