本题源自leetcode 437
-------------------------------------------------------------
思路:递归
用一个变量记录当前和。然后递归遍历左子树和右子树。
代码:
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 pre, int sum){
if(!root)
return 0;
int cur = pre + root->val;
return (cur == sum) + sumUp(root->left,cur,sum) + sumUp(root->right,cur,sum);
}