这个题虽然是个简单题,但是也不是不需要动脑筋。
简单的dfs还是要会的。稍微注意的是那个返回值,使用值引用会更好。然后找到路径就提前退出。

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return bool布尔型
     */
    bool hasPathSum(TreeNode* root, int sum) {
        // write code here
        bool res = false;
        dfs(root, 0, sum, res);
        return res;
    }
    
    void dfs(TreeNode* root, int cur, int sum,bool &res) {
        // write code here
        if(root == NULL || res){
            return;
        }
        
        if(root->left != NULL){
            dfs(root->left,cur + root->val,sum, res);
        }
        
        if(root->right != NULL){
            dfs(root->right,cur + root->val,sum, res);
        }
        
        if(root->left == NULL && root->right == NULL){
            if(cur + root->val == sum){
                res = true;
            }else{
                res = false;
            }
        }
    }
};