https://leetcode.com/problems/path-sum/
class Solution {
public:
bool hasPathSum(TreeNode* root, int sum) {
if(root==nullptr) return false;
return dfs(root, sum);
}
bool dfs(TreeNode* root, int sum){
if(root==nullptr){//如果当前节点为空
if(sum==0) return true; //如果剩下的num为0,则匹配成功
return false;
}
//如果当前节点不为空:
//如果左右子树为空
else if(root->left == nullptr && root->right==nullptr){
if(root->val == sum)//如果当前节点与num相等,则匹配成功
return true;
return false;
}
//如果左右子树均不为空
else if(root->left !=nullptr && root->right!=nullptr){
return dfs(root->left, sum- root->val)|| dfs(root->right, sum- root->val);
}
//如果左子树不为空,右子树为空
else if(root->left !=nullptr && root->right==nullptr){
return dfs(root->left, sum- root->val);
}
//如果左子树为空,右子树不为空
else if(root->left ==nullptr && root->right!=nullptr){
return dfs(root->right, sum- root->val);
}
return false;
}
};