首页 > 其他 > 详细

路径总和II

时间:2021-08-02 11:11:11      阅读:26      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

详细思路

dfs,形参roottargetSum,得到root树所有等于targetSum的路径,由于根结点不算做叶节点所以不能到空节点,边界是叶节点
 
精确定义
dfs,形参roottargetSum,得到root树所有等于targetSum的路径,叶节点边界更新答案,最后根据孩子情况更新答案
class Solution {
public:
    vector<vector<int>> pathSum(TreeNode* root, int targetSum) {
        if(!root)return {};
        vector<vector<int>>ans;
        vector<int>ans1;
        dfs(root,targetSum,ans,ans1);
        return ans;
    }
    void dfs(TreeNode*root,int targetSum,vector<vector<int>>&ans,vector<int>&ans1){
        if(!root->left&&!root->right){
            ans1.push_back(root->val);
            if(root->val==targetSum){
                ans.push_back(ans1);
                return ;
            }else return;
        }
        ans1.push_back(root->val);
        int newVal=targetSum-root->val;
        if(root->left){
            dfs(root->left,newVal,ans,ans1);
            ans1.pop_back();
        }
        if(root->right){
            dfs(root->right,newVal,ans,ans1);
            ans1.pop_back();
        }
    }
};
踩过的坑
没有返回值的递归,更新答案往往需要回溯,边界返回记得也要push,应对返回之后pop
        if(!root->left&&!root->right){
            ans1.push_back(root->val);
 
            ans1.pop_back();

 

路径总和II

原文:https://www.cnblogs.com/zhouzihong/p/15088700.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!