/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int sum1;//全局变量,用来代替sum,同时为了节省空间开辟的
bool flag=false;//全局变量,显示是否有通路,一开始肯定是没有通路
bool hasPathSum(TreeNode* root, int sum) {
sum1=sum;
if(root==NULL)
return 0;//空树肯定没有通路
dfs(root,root->val);
return flag;
}
void dfs(TreeNode* root,int sum){
if(root->left==NULL&&root->right==NULL){
if(sum==sum1){//设置返回条件,已经到达叶子节点,如果找到了路径那么返回,没找到路径也要返回。
flag=true;
return ;
}else return;
}
if(root->left!=NULL){
dfs(root->left,sum+root->left->val);//如果左边可以探索那么,把当前的状态叠加到下一层,
}
if(root->right!=NULL){
dfs(root->right,sum+root->right->val);如果右边可以探索那么,把当前的状态叠加到下一层,
}
}
};