LeetCode 22. Generate Parentheses (Medium)

来源:互联网 发布:python爬虫源码 编辑:程序博客网 时间:2024/05/21 17:51

题目描述:

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

Example:

Given n = 3, a solution set is:[  "((()))",  "(()())",  "(())()",  "()(())",  "()()()"]

题目大意:给出n,生成所有包含n对括号的合法的括号串。

思路:模拟二叉树遍历,当左括号有剩余,添加左括号,当右括号数大于左括号,添加右括号。

c++代码:

class Solution {public:    vector<string> generateParenthesis(int n) {        dfs("", n, n);        return ans;    }    void dfs(string str, int left, int right)    {        if (left == 0 && right == 0)        {            ans.push_back(str);            return;        }        if (left > 0)            dfs(str + "(", left - 1, right);        if (left < right)            dfs(str + ")", left, right - 1);    }private:    vector<string> ans;};
阅读全文
0 0
原创粉丝点击