112. 路径总和

112. 路径总和

 

/**
 * 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);如果右边可以探索那么,把当前的状态叠加到下一层,
        }  
        
    }
    
};

 

上一篇:数组去重实现


下一篇:SetWindowLong函数GetWindowLong函数