/**
*
* @param n int整型
* @return string字符串一维数组
*/
//DFS
func generateParenthesis( n int ) []string {
res := []string{}
var dfs func(int,int,string)
dfs = func (l, r int, path string) {
//当括号的数量达到2*n的时候就结束递归
if 2*n == len(path) {
res = append(res, path)
return
}
//递归加入左括号
if l > 0 {
dfs(l-1, r, path+"(")
}
//当右括号的数量多于左括号时,才加入
//可以达到剪枝效果
if r > l {
dfs(l, r-1, path+")")
}
}
dfs(n, n, "")
return res
}