import java.util.*;
public class Solution {
/**
*
* @param n int整型
* @return string字符串ArrayList
*/
public ArrayList<String> generateParenthesis (int n) {
ArrayList<String> list = new ArrayList<>();
dfs(list, new StringBuilder(), n, 0, 0);
return list;
}
public void dfs(ArrayList<String> list, StringBuilder builder, int n, int open ,int close) {
if (close>open || open>n) {
return;
}
if (builder.length()==2*n) {
list.add(builder.toString());
return;
}
dfs(list, builder.append("("), n, open + 1, close);
builder.deleteCharAt(builder.length()-1);
dfs(list, builder.append(")"), n, open, close + 1);
builder.deleteCharAt(builder.length()-1);
}
}