Generate Parentheses - Implementation

Here is the implementation:

function generateParenthesis(n):
    result = []
    backtrack("", 0, 0)
    return result

function backtrack(current, open, close):
    if current.length == 2 * n:
        result.append(current)
        return

    if open < n:
        backtrack(current + "(", open + 1, close)

    if close < open:
        backtrack(current + ")", open, close + 1)

The number of valid strings is Cn=1n+1(2nn)C_n = \frac{1}{n+1}\binom{2n}{n}. Each string has length 2n2n.