class Solution {
public List<String> generateParenthesis(int n) {
// 定义存储字符串的括号
String str ="";
int left =0;
int right =0;
List<String> result = new ArrayList<>();
backTracking(n,result,left,right,str);
return result;
}
private void backTracking(int n,List result,int left,int right,String str) {
// 递归结束条件
if (right > left) {
return;
}
// right == left == n
if (left == n && right == n) {
result.add(str);
return;
}
// left < n 递归向下运行
if (left < n) {
backTracking(n,result,left+1,right,str+"(");
}
if (right < left) {
backTracking(n,result,left,right+1,str+")");
}
}
}
以上为图解