// 简单递归,因为右括号个数只能比左括号剩余个树多才能放置
// 换句话说,先放了多少个左括号,就可以放置多少个右括号
class Solution {
public List<String> res = new ArrayList<>();
public List<String> generateParenthesis(int n) {
if (n == 0)
return null;
dfs("", n, n);
return res;
}
public void dfs(String s, int l, int r) {
if (l == 0) {
for (int i = 0; i < r; i++)
s += ")";
res.add(s);
return;
}
dfs(s + "(", l - 1, r);
if (l < r)
dfs(s + ")", l, r - 1);
}
}