param { number } n return { string [ ] } var generateParenthesis = function ( n ) : string [ ] { if ( n === 0 ) { return [ ] ; } let res = [ ] ; dfs ( '' , n , n , res ) ; return res ; } ; param { string } str param { number } left param { number } right param { string [ ] } res var dfs = function ( str , left , right , res ) : void { if ( left === 0 && right === 0 ) { res . push ( str ) ; return ; } if ( right < left ) { return ; } if ( left > 0 ) { dfs ( str + '(' , left - 1 , right , res ) ; } if ( right > 0 ) { dfs ( str + ')' , left , right - 1 , res ) ; } } ; export { generateParenthesis } ;