深度优先遍历+回溯
/**
* 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
if(root == nullptr){
return false;
}
return dfs(root,sum);
}
bool dfs(TreeNode* root,int sum){
if(root == nullptr) return false;
sum -= root->val;
if(root->left == nullptr && root->right == nullptr && sum == 0){
return true;
}
return dfs(root->left,sum) || dfs(root->right,sum);
}
};