78.子集

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

如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,那么组合问题和分割问题都是收集树的叶子节点,而子集问题是找树的所有节点