/*二叉递归调用复杂度为2^n n为递归深度或叫 二叉树层数
在类里边实现的递归函数是在私有域去实现的
每层递归 传入递归函数的参数都是逐层变化的
回溯递归:每次递归深入一层 就有一次在当前层的回溯
*/
class Solution {
public:
std::vector<vector> subsets(std::vector& nums) {
std::vector<std::vector> result;
std::vector item;
result.push_back(item);
gernerate(0 , nums, item,result);
return result;
}
private:
//容器形参定义的方法 类型+&+名字
void gernerate(int i,std::vector& nums , std::vector& item, std::vector<std::vector>& result){
//等于size也是要return的 因为从0开始的
if(i >= nums.size()){
return;
}
//只有栈堆队列的‘尾加’是push 容器类都是push_back
item.push_back(nums[i]);
result.push_back(item);
gernerate(i+1, nums,item,result);
//弹出尾元素没有参数
item.pop_back();
gernerate(i+1,nums,item,result);
}
};