22. Generate Parentheses

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()"]

利用递归完成回溯算法,以n=2为例:
进入第一层函数,left=0,right=0,进入第二个if,填一个左括号
“(”进入第二层函数,left=1,right=0,进入第二个if,填一个左括号
“((”进入第三层函数,left=2,right=0,进入第三个if,填一个右括号
“(()”进入第四层函数,left=2,right=1,进入第三个if,填一个右括号
“(())”进入第五层函数,left=2,right=2,进入第一个if,结果压入数组,返回第四层
str为“(()”,返回第三层
str为“((”,返回第二层
str为“(”,left=1,right=0,进入第三个if,填一个右括号
“()”进入第三层,left=1,right=1,进入第二个if,填一个左括号
“()(”进入第四层,left=2,right=1,进入第三个if,填一个右括号
“()()”进入第五层,left=2,right=2,进入第一个if,结果压入数组,返回第四层
str为“()(”,返回第三层
str为“()”,left=1,right=1,返回第二层
str为“(”,返回第一层
str为“”left=0,right=0,返回

/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
    var res = [];
    var help = function(str,left,right) {
        if (right===n)
            res.push(str);
        if (left

你可能感兴趣的:(22. Generate Parentheses)