Generate Parentheses

LeetCode 22

class Solution:
    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        self.res = []
        self.dfs(n, n, "")
        return self.res   
        """
        破題為:左右括號數同 代入 DFS 
                 (
                /  \
               (    ) 
              / \  / \      
             (   )(   ) <-- right < left return None
              \  / ...
               ) (
                \ \
                 ) )
                  \ \
                   ) )
        """
    def dfs(self, left, right, path):
        if right < left:
            return
        if left == 0 and right == 0:
            self.res.append(path)
        if left>=0:
            self.dfs(left-1, right, path+"(")
        if right>=0:
            self.dfs(left, right-1, path+")")

Last updated