不同的二叉搜索树2

给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树

示例:

输入: 3

输出:

[

[1,null,3,2],

[3,2,null,1],

[3,1,null,null,2],

[2,1,3],

[1,null,2,null,3]

]

解释:

以上的输出对应以下 5 种不同结构的二叉搜索树:

 /**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<TreeNode *> generateTrees(int n) {
vector<TreeNode *> ret;
if (n == 0)
return ret;
return Helper(1, n);
}
vector<TreeNode *> Helper(int begin, int end)
{
vector<TreeNode *> ret;
if (begin > end)
ret.push_back(NULL);
else if (begin == end)
{
TreeNode* node = new TreeNode(begin);
ret.push_back(node);
}
else
{
for (int i = begin; i <= end; i++)
{//root
vector<TreeNode *> left = Helper(begin, i - 1);
vector<TreeNode *> right = Helper(i + 1, end);
for (int l = 0; l < left.size(); l++)
{
for (int r = 0; r < right.size(); r++)
{
//new tree
TreeNode* root = new TreeNode(i);
root->left = left[l];
root->right = right[r];
ret.push_back(root);
}
}
}
}
return ret;
}
};

最新文章

  1. 以ls命令为实例介绍命令基本格式
  2. 【转】java正则表达式
  3. css“变形”效果
  4. Cassandra 备份 - 1 - 节点镜像恢复
  5. 在线编辑器 (UBB, FCK)
  6. How to: Run Tests from Microsoft Visual Studio
  7. linux - 怎么自动填写有交互的shell脚本 - SegmentFault
  8. 【ibatis】cachemodel、属性 及特殊配置
  9. front-end
  10. C#实现动态网站伪静态,使seo更友好
  11. github atom 试用
  12. 范围for语句 &amp;&amp; 列表初始值&amp;&amp; 标准库函数begin和end
  13. 浅谈移动端适配-rem
  14. stop_token.go
  15. linux 命令 创建 Django 项目 使用路由返回首页界面
  16. LoRa---数据包结构、跳频
  17. Notes of Daily Scrum Meeting(12.16)
  18. NO.6: 若不想编译器提供自动生成的函数,就应该明确拒绝
  19. error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”
  20. springloaded hot deploy

热门文章

  1. js滚轮事件需要注意的兼容性问题
  2. 0623-TP框架整理一(下载、入口文件、路由、创建控制器、调用模板、系统常量、命名空间)
  3. bzoj 1783: [Usaco2010 Jan]Taking Turns【贪心+dp】
  4. Java 添加、回复、修改(替换)、删除Word批注
  5. 洛谷 P2881 [USACO07MAR]排名的牛Ranking the Cows
  6. 转 js实践篇:例外处理Try{}catch(e){}
  7. sublime text 3 使用技巧
  8. Sql2008事务日志已满处理
  9. WebForm vs MVC
  10. CentOS6.6从头到尾部署nginx与tomcat多实例