22.括号生成

解法1:深度优先遍历
时刻要保持约束:左括号剩余数left<=右括号剩余数right 并且左括号数量>=0 且右括号>0

class Solution {
public:
    vector res;
    vector generateParenthesis(int n) {

        //深度优先遍历
        int left=n,right=n;

        string tmp="";
        
        dfs(tmp,left,right);
        return res;
    }

    void dfs(string tmp, int left, int right)
    {
        if(left==0 && right==0)
        {
            res.push_back(tmp);
            return;
        }

         if(right=0 && right>0)
        {
            dfs(tmp+'(',left-1,right);
            dfs(tmp+')',left,right-1);
        }
            

        return;


    }
};

你可能感兴趣的:(22.括号生成)