【leetcode】-113-路径总和

刚开始并不知道temp.pop_back();用来干什么。当右子树遍历完成之后进行回退,回退的时候要删除当前遍历结点,保证temp里面的路径始终是从根节点出发的。否则路径就会有重复。

    vector<vector<int>> res;
    vector<int> temp;

    void dfs(TreeNode* root, int sum){
        if(root==nullptr)return;
        temp.push_back(root->val);
        sum=sum-root->val;
        if(root->left==nullptr&&root->right==nullptr&&sum==0) res.push_back(temp);
        
        dfs(root->left,sum);
        dfs(root->right,sum);
        
        temp.pop_back();
    }

    vector<vector<int>> pathSum(TreeNode* root, int targetSum) {
        dfs(root,targetSum);
        return res;
    }

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/114392449