class Solution(object):
def gen(self,N):
ans = []
def backtrack(S = '', left = 0, right = 0):
#如果左右括号都已经用完,加入解集,返回
if len(S) == 2*N:
ans.append(S)
return
#否则开始各种尝试:还有左括号可以用,加一个左括号继续递归
if left < N:
backtrack(S+'(', left+1, right)
print(S)
# 有括号小于左括号,加一个右括号,继续递归
if right < left:
backtrack(S+')',left, right+1)
# print(S)
backtrack()
return ans
if __name__ == '__main__':
test = Solution()
print(test.gen(2))
参考