Generate parentheses,生成括号对,递归,深度优先搜索。
问题描述:给n对括号,生成所有合理的括号对。比如n=2,(()),()()
算法思路:利用深度优先搜索的递归思想,对n进行深度优先搜索。边界条件是n==0;前面电话号组成字符串也是利用dfs。
public List<String> generateParenthesis(int n) { List<String> result = new ArrayList<>(); dfs(result,"",n,n); return result; } public void dfs(List<String> result, String s, int left, int right)//n个左括号,n个右括号 { if(left > right)//右括号比左括号多,无法生成。直接返回。截枝。 { return; } if(left == 0 && right == 0)//递归的边界条件。 { result.add(s); } if(left > 0) { dfs(result, s+"(", left-1, right); } if(right > 0) { dfs(result, s+")", left, right-1); } }