使用递归。需要注意一点的是,如果遍历到该节点时,合值等于目标值,还是要继续往下遍历的
class Solution
{
public:
int pathSum(TreeNode *root, int sum)
{
if (!root)
return 0;
return sumUp(root, 0, sum) + pathSum(root->left, sum) + pathSum(root->right, sum);
}
int sumUp(TreeNode *root, int preNum, int sum)
{
if (!root)
return 0;
int curNum = preNum + root->val;
return (curNum == sum) + sumUp(root->left, curNum, sum) + sumUp(root->right, curNum, sum);
}
};