思路一 回溯法
分析:在遍历树的过程中,右括号的左边一定有左括号,并且是左括号打头
终止条件
如果右括号个数大于左括号个数,返回
如果左括号和右括号等于括号对数,加入结果集,回溯
递归
如果左括号数小于括号对数,添加左括号
如果右括号小于左括号个数,添加右括号
代码实现:
class Solution {
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList();
backTracking(n,result,0,0,"");
return result;
}
private void backTracking(int n,List<String> result,int left,int right,String str)
{
if(right>left)
return;
if(left==n&&right==n)
{
result.add(str);
return;
}
if(left<n)
{
backTracking(n,result,left+1,right,str+"(");
}
if(right<left)
{
backTracking(n,result,left,right+1,str+")");
}
}
}
思路二:?