• leetcode112.路径总和


    解法1是DFS,解法2是BFS
    DFS应用了前序遍历的方法,BFS用的层序遍历求和,qt表示用队列存储树节点指针,qi表示存储到该节点的路径和

    class Solution {
    public:
        bool hasPathSum(TreeNode* root, int targetSum) {
            if(!root){
                return false;
            }
            bool flag=false;
            bool& exist=flag;
            // dfs(root,0,targetSum,exist);
            bfs(root,targetSum,exist);
            return exist;
        }
        void dfs(TreeNode* tn,int sum,int targetSum,bool& exist){
            if(!tn){
                return;
            }
            sum+=tn->val;
            if(sum==targetSum&&!tn->left&&!tn->right){
                exist=true;
                return;
            }
            dfs(tn->left,sum,targetSum,exist);
            dfs(tn->right,sum,targetSum,exist);
        }
        void bfs(TreeNode*node,int targetSum,bool& exist){
            if(!node){
                return;
            }
            if(!node->left&&!node->right){
                exist=targetSum==node->val;
            }
            queue<TreeNode*> qt;
            queue<int> qi;
            qt.push(node);
            qi.push(node->val);
            while(!qt.empty()){
                int sz=qt.size();
                for(int i=0;i<sz;++i){
                    TreeNode* tn=qt.front();
                    int sum=qi.front();
                    if(tn->left){
                        int sum1=tn->left->val+sum;
                        if(!tn->left->left&&!tn->left->right&&sum1==targetSum){
                            exist=true;
                            return;
                        }
                        qt.push(tn->left);
                        qi.push(sum1);
                    }
                    if(tn->right){
                        int sum1=tn->right->val+sum;
                        if(!tn->right->left&&!tn->right->right&&sum1==targetSum){
                            exist=true;
                            return;
                        }
                        qt.push(tn->right);
                        qi.push(sum1);
    
                    }
                    qt.pop();
                    qi.pop();
                }
            }
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
  • 相关阅读:
    操作配置文件保存方式(上位机)
    python数据抓取方式
    【JVM】类加载器
    深入理解Java内存区域(最新版面试题)
    教你从零开始画echarts地图
    安卓学习:广播
    第四章-串
    Java Keyword
    什么是分卷压缩
    Scientific colour maps颜色包--共35种--全平台可用
  • 原文地址:https://blog.csdn.net/weixin_46028606/article/details/136749939