树的遍历,注意左括号和右括号的添加条件即可。
# 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
#
#
#
# 示例:
#
# 输入:n = 3
# 输出:[
# "((()))",
# "(()())",
# "(())()",
# "()(())",
# "()()()"
# ]
#
# Related Topics 字符串 回溯算法
# 👍 1505 👎 0
# leetcode submit region begin(Prohibit modification and deletion)
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
res = []
def dfs(lLeft, rLeft, str):
if len(str) == 2 * n:
res.append(str)
return
if lLeft > 0:
dfs(lLeft - 1, rLeft, str + "(")
if lLeft < rLeft:
dfs(lLeft, rLeft - 1, str + ")")
dfs(n, n, "")
return res
# leetcode submit region end(Prohibit modification and deletion)
print(Solution().generateParenthesis(3))