思路:基本的递归求解,注意只有一个子树的情况(假设只有右子树),如果此时根节点的值等于目标值,那么结果要返回右子树的结果。
code:
class Solution {
public:
bool dfs(TreeNode *root,int curSum,int sum){
if(root == NULL){
if(curSum == sum)
return true;
return false;
}
bool left = dfs(root->left,curSum + root->val,sum);
bool right = dfs(root->right,curSum + root->val,sum);
if(root->left == NULL)
return right;
if(root->right == NULL)
return left;
return left || right;
}
bool hasPathSum(TreeNode *root, int sum) {
if(root == NULL)return false;
bool ret = dfs(root,0,sum);
return ret;
}
};