# LeetCode之Generate Parentheses（C++）

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

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

```        struct TreeNode{
TreeNode* left,*right,*parent,*top;
char val;
int count;
TreeNode(char v):val(v),top(NULL),left(NULL),right(NULL),parent(NULL),count(0){};
TreeNode(char v,TreeNode* p):val(v),top(NULL),left(NULL),right(NULL),parent(p),count(0){};
};```

```class Solution {
public:
struct TreeNode{
TreeNode* left,*right,*parent,*top;
char val;
int count;
TreeNode(char v):val(v),top(NULL),left(NULL),right(NULL),parent(NULL),count(0){};
TreeNode(char v,TreeNode* p):val(v),top(NULL),left(NULL),right(NULL),parent(p),count(0){};
};
void generateTree(TreeNode* node){
if(node->top){
if(node->count>0){
node->left=new TreeNode('(',node);
node->left->count=node->count-1;
node->left->top=node->left;
generateTree(node->left);
node->right=new TreeNode(')',node);
node->right->count=node->count;
if(node->top->parent)
node->right->top=node->top->parent->top;
generateTree(node->right);
}else{
node->right=new TreeNode(')',node);
node->right->count=node->count;
if(node->top->parent)
node->right->top=node->top->parent->top;
generateTree(node->right);
}
}else{
if(node->count>0){
node->left=new TreeNode('(',node);
node->left->count=node->count-1;
node->left->top=node->left;
generateTree(node->left);
}else{
return;
}
}
}
void traverseTree(TreeNode* node,vector<string>& results,string upStr){
if(!node->left&&!node->right){
ostringstream ostr;
ostr<<upStr;
ostr.put(node->val);
results.push_back(ostr.str());
return;
}
if(node->left){
ostringstream ostr;
ostr<<upStr;
ostr.put(node->val);
traverseTree(node->left,results,ostr.str());
}
if(node->right){
ostringstream ostr;
ostr<<upStr;
ostr.put(node->val);
traverseTree(node->right,results,ostr.str());
}
}
vector<string> generateParenthesis(int n) {
vector<string> results;
if(n==0)
return results;
return results;
}
};```

0 条评论

• ### JOJ 2676 Problem B

题意：给三个点abc的坐标构成三角形，在三角形内部找到一点，促使a所对应的边构成的三角形占总 三角形面积的1/2，c点对应的边构成的三角形占总三角形面积的1/6...

• ### AVL树探秘

一、AVL树 　　AVL树是一种平衡查找树，在前面的两篇文章：二叉搜索树 和 红黑树 中都提到过。由于二叉搜索树在某些特殊情况下是不平衡的（任意一个结点深度过大...

• ### centos7配置nodejs环境

想起自己有台显示的linux服务器,这里给博友们带来centos7发行版配置nodejs环境(这里以最新版的v8.11为例)

• ### 算法：跳跃表的实现

在跳跃表中，每个节点的level数随机按1-5生成并不是很好，可以引入一个算法。在redis中，每个节点的level有1-32层。层数越大的节点越少。具体上，可...

• ### 性能分析之OS资源饱和度

在做性能分析的时候，我们不可避免地判断资源到底够不够用？哪里不够？为什么不够？证据是什么？

• ### 【剑指offer:两个链表的第一个公共节点】双解法

题目提示了，空间复杂度可以降低到\$O(1)\$。这时候不能用哈希表，可以使用快慢指针的思路来处理。整体思路如下：