Leetcode 95.不同的二叉搜索树II
2024-10-14 04:14:13
不同的二叉搜索树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;
}
};
最新文章
- 以ls命令为实例介绍命令基本格式
- 【转】java正则表达式
- css“变形”效果
- Cassandra 备份 - 1 - 节点镜像恢复
- 在线编辑器 (UBB, FCK)
- How to: Run Tests from Microsoft Visual Studio
- linux - 怎么自动填写有交互的shell脚本 - SegmentFault
- 【ibatis】cachemodel、属性 及特殊配置
- front-end
- C#实现动态网站伪静态,使seo更友好
- github atom 试用
- 范围for语句 &;&; 列表初始值&;&; 标准库函数begin和end
- 浅谈移动端适配-rem
- stop_token.go
- linux 命令 创建 Django 项目 使用路由返回首页界面
- LoRa---数据包结构、跳频
- Notes of Daily Scrum Meeting(12.16)
- NO.6: 若不想编译器提供自动生成的函数,就应该明确拒绝
- error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”
- springloaded hot deploy
热门文章
- js滚轮事件需要注意的兼容性问题
- 0623-TP框架整理一(下载、入口文件、路由、创建控制器、调用模板、系统常量、命名空间)
- bzoj 1783: [Usaco2010 Jan]Taking Turns【贪心+dp】
- Java 添加、回复、修改(替换)、删除Word批注
- 洛谷 P2881 [USACO07MAR]排名的牛Ranking the Cows
- 转 js实践篇:例外处理Try{}catch(e){}
- sublime text 3 使用技巧
- Sql2008事务日志已满处理
- WebForm vs MVC
- CentOS6.6从头到尾部署nginx与tomcat多实例