import java.util.*;
public class Solution {
/**
*
* @param n int整型
* @return string字符串ArrayList
*/
static ArrayList<String> ans = new ArrayList<>();
public static ArrayList<String> generateParenthesis(int n) {
char[] path = new char[n * 2];
dfs(0, 0, n, path, 0);
return ans;
}
private static void dfs(int left, int right, int n, char[] path, int index) {
if (left + right == 2 * n) {
ans.add(new String(path));
return;
}
if (left < n) {
path[index] = '(';
dfs(left + 1, right, n, path, index + 1);
}
if (left > right) {
path[index] = ')';
dfs(left, right + 1, n, path, index + 1);
}
}
}