题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例
输入:n = 3
输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]
解法
所有可能的括号组合可以用一颗树来表示,使用深度搜素遍历过程中筛选掉无效的括号组合。
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
res=[]
#用left和right标记左括号数和右括号数
def dfs(path,left,right):
if left>n or right>left:
return
if len(path)==2*n:
res.append(path)
dfs(path+"(",left+1,right)
dfs(path+")",left,right+1)
dfs("",0,0)
return res