public static List<String> generateParenthesis(int n) {
List<String> l = new ArrayList<String>();
addParenthesis(l,"",n,0);
return l;
}
public static void addParenthesis(List<String> l, String s, int left, int right) {
if(left==0 && right==0) {
l.add(s);
}
if(left>0) {
addParenthesis(l,s+'(',left-1,right+1);
}
if(right>0) {
addParenthesis(l,s+')',left,right-1);
}
}
List<String> l = new ArrayList<String>();
addParenthesis(l,"",n,0);
return l;
}
public static void addParenthesis(List<String> l, String s, int left, int right) {
if(left==0 && right==0) {
l.add(s);
}
if(left>0) {
addParenthesis(l,s+'(',left-1,right+1);
}
if(right>0) {
addParenthesis(l,s+')',left,right-1);
}
}