leetcode 22. Generate Parentheses

原创 2016年05月30日 09:54:54

题目:

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

n:n对儿括号,写一个函数,生成所有括号的组合方式

For example, given n = 3, a solution set is:

"((()))", "(()())", "(())()", "()(())", "()()()"

解答:

用二叉树形象的表示这种关系。然后再把二叉树转化为代码的形式。因为二叉树的定义就是递归定义的,因此本题很明显应该使用递归的形式。


从上面的图片中我们可以很明显的看到,其中左分支都是添加左括号,又分支都是添加右括号。

在什么情况下添加左括号呢?

在递归调用的时候,在能传递到最底层,先添加”(“,然后left-1,递归调用就可以。

那什么时候添加右括号呢?

当左括号个数大于右括号的个数时添加右括号。


1.想到二叉树,想到递归实现。 
2.递归函数的参数形式要考虑清楚才可以。

class Solution {
public:
    vector<string> generateParenthesis(int n) 
    {
        //最后返回的 
        vector<string> ret;
        if(n==0)
        return ret;
        
        //调用该函数求出 ret
        dfs(ret,"",n,n);
        return ret;
    }
    
    void dfs( vector<string> &ret , string tem , int l , int r)//记着要传ret的引用
    {
        if(l==0 && r==0)
        {
            ret.push_back(tem);
            return ;
        }
        
        if(l>0)
        {
            
            dfs(ret , tem +"(", l-1 , r);
        }
        
        if(l<r)
        {
            
            dfs(ret , tem +")", l , r-1);
        }
    }
};



LeetCode 22 Generate Parentheses (C,C++,Java,Python)

Problem: Given n pairs of parentheses, write a function to generate all combinations of well-fo...
  • runningtortoises
  • runningtortoises
  • 2015年05月10日 21:11
  • 1363

LeetCode 22 — Generate Parentheses(C++ Java Python)

题目:http://oj.leetcode.com/problems/generate-parentheses/ Given n pairs of parentheses, write a func...
  • dragon_dream
  • dragon_dream
  • 2014年04月17日 11:11
  • 3021

LeetCode --- 22. Generate Parentheses

题目链接:Generate Parentheses Given n pairs of parentheses, write a function to generate all combinatio...
  • makuiyu
  • makuiyu
  • 2015年01月31日 13:08
  • 2497

LeetCode22GenerateParentheses--In Java

这个问题让人想到火车进站的次序问题,解的数量可以用卡特兰数求出。  因此我想到其实括号的排列和栈混洗的各个情况是一一对应的。  现有1、2、3三个数字,栈混洗后有123,132,213,231,321...
  • sinat_27564919
  • sinat_27564919
  • 2016年02月21日 19:32
  • 309

LeetCode(22)Generate Parentheses

题目Given n pairs of parentheses, write a function to generate all combinations of well-formed parenth...
  • fly_yr
  • fly_yr
  • 2015年09月26日 19:57
  • 1710

LeetCode 22:Generate Parentheses的递归,回溯两种解法

Generate Parentheses Given n pairs of parentheses, write a function to generate all combination...
  • liuyuan185442111
  • liuyuan185442111
  • 2015年08月24日 11:29
  • 654

leetcode之 Generate Parentheses

题目:http://oj.leetcode.com/problems/generate-parentheses/ 描述:给定一个非负整数n,生成n对括号的所有合法排列。 解答: 该问题解的个数就是卡特...
  • yutianzuijin
  • yutianzuijin
  • 2013年10月26日 23:19
  • 21807

[Java]LeetCode22 Generate Parentheses

[Java]LeetCode22 Generate Parentheses
  • fumier
  • fumier
  • 2015年04月23日 09:55
  • 634

LeetCode Generate Parentheses 深度分析理解

以我的思维,我是使用二叉树的思维思考这个算法的 我考虑这个递归树的时候有两个难点: 1 如何两边同时遍历一棵树? 2 如何剔除不适合的路径?比如最中间的路径是不满足条件的。 到底是什么样的树?构...
  • kenden23
  • kenden23
  • 2013年11月26日 08:05
  • 3593

22.Generate Parentheses&n对括号的全部有效组合

Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes...
  • sjt091110317
  • sjt091110317
  • 2015年06月05日 15:51
  • 521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode 22. Generate Parentheses
举报原因:
原因补充:

(最多只允许输入30个字)