树的遍历,注意左括号和右括号的添加条件即可。

    1. # 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
    2. #
    3. #
    4. #
    5. # 示例:
    6. #
    7. # 输入:n = 3
    8. # 输出:[
    9. # "((()))",
    10. # "(()())",
    11. # "(())()",
    12. # "()(())",
    13. # "()()()"
    14. # ]
    15. #
    16. # Related Topics 字符串 回溯算法
    17. # 👍 1505 👎 0
    18. # leetcode submit region begin(Prohibit modification and deletion)
    19. class Solution(object):
    20. def generateParenthesis(self, n):
    21. """
    22. :type n: int
    23. :rtype: List[str]
    24. """
    25. res = []
    26. def dfs(lLeft, rLeft, str):
    27. if len(str) == 2 * n:
    28. res.append(str)
    29. return
    30. if lLeft > 0:
    31. dfs(lLeft - 1, rLeft, str + "(")
    32. if lLeft < rLeft:
    33. dfs(lLeft, rLeft - 1, str + ")")
    34. dfs(n, n, "")
    35. return res
    36. # leetcode submit region end(Prohibit modification and deletion)
    37. print(Solution().generateParenthesis(3))