题目来源
借此参考
深度优先遍历:
思路:
1.递归出口是当左括号或右括号为零。
2.左括号的剩余量大于右括号时,此时直接结束。
3.左括号,右括号没用完,就继续递归连接"(“或”)"。
class Solution {
List<String> res=new ArrayList<>();//结果集合
public List<String> generateParenthesis(int n) {
dfs(n,n,"");
return res;
}
private void dfs(int l,int r,String str){
if(l==0 && r==0){
res.add(str);
return;
}
if(l>r){
return;
}
if(l>0){
dfs(l-1,r,str+"(");
}
if(r>0){
dfs(l,r-1,str+")");
}
}
}