a 代表左括号个数,b 代表右括号个数,这里使用了二叉树的思想,每个节点都分两种情况,新增一个左括号(,或者新增一个有括号的情况),直到遇到了左右个数相等且配对个数为n了,就返回结果
var generateParenthesis = function (n) {
var res = [];
dfs(0, 0, "");
return res;
function dfs(a, b, str) {
if (a === b && a === n) {
res.push(str);
return;
}
if (a < b || a > n) {
return;
}
dfs(a + 1, b, str + "(");
dfs(a, b + 1, str + ")");
}
};