Как преобразовать рекурсивную DFS в итеративную DFS? - PullRequest
0 голосов
/ 09 июня 2019

Я думал о способе решения проблемы подмножеств (https://leetcode.com/problems/subsets/) с использованием рекурсивной DFS. Но я не могу придумать, как решить ее с помощью итеративной DFS. Может ли кто-нибудь помочь?

Моя рекурсивная DFSрешение:

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> res;
        vector<int> cur;
        helper(nums, 0, cur, res);
        return res;
    }
    void helper(vector<int>& nums, int start, vector<int>& cur, vector<vector<int>>& res){
        res.push_back(cur);
        if(start>=nums.size()) return;
        for(int i=start; i<nums.size();i++){
            cur.push_back(nums[i]);
            helper(nums, i+1, cur, res);
            cur.pop_back();
        }
    }
};
...