LeetCode OJ——Unique Binary Search Trees II
2024-10-20 08:45:45
http://oj.leetcode.com/problems/unique-binary-search-trees-ii/
一题要求得出所有树的种类数,二题要求得出所有树。
在一题的基础上修改代码,还是要提前想清楚再写。
#include <iostream>
#include <vector>
using namespace std; struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
}; class Solution {
public:
vector<TreeNode *> fun(int start,int end )
{
vector<TreeNode *> ansTemp;
vector<TreeNode *> ansTemp2;
vector<TreeNode *> ansTemp3; ansTemp.clear();
if(start>end)
{
ansTemp.push_back(NULL);
return ansTemp;
}
if(start == end)
{
TreeNode *mid = new TreeNode(start);
ansTemp.push_back(mid);
return ansTemp;
} for(int i=start;i<=end;i++)//枚举的中间位置
{
ansTemp2 = fun(start,i-);
ansTemp3 = fun(i+,end); if(ansTemp2.size()!=&&ansTemp3.size()!=)
for(int j = ;j<ansTemp2.size();j++)
{
for(int k = ;k<ansTemp3.size();k++)
{
TreeNode * root = new TreeNode();
root->val = i;
root->left = ansTemp2[j];
root->right = ansTemp3[k];
ansTemp.push_back(root);
}
}
else if(ansTemp2.size()!=&&ansTemp3.size()==)
for(int j = ;j<ansTemp2.size();j++)
{
TreeNode * root = new TreeNode();
root->val = i;
root->left = ansTemp2[j];
root->right = NULL;
ansTemp.push_back(root);
}
else if(ansTemp2.size()==&&ansTemp3.size()!=)
for(int k = ;k<ansTemp3.size();k++)
{
TreeNode * root = new TreeNode();
root->val = i;
root->left = NULL;
root->right = ansTemp3[k];
ansTemp.push_back(root);
}
else
{
TreeNode * root = new TreeNode(i);
ansTemp.push_back(root);
} } return ansTemp;
} vector<TreeNode *> generateTrees(int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
vector<TreeNode *> ans;
ans.clear();
ans = fun(,n);
return ans;
}
}; int main()
{
Solution my;
my.generateTrees();
return ;
}
亲爱的,加油。
最新文章
- HTML学习
- 招聘.NET开发人员(截止于2015-06-15)
- linux 安装后
- CSS常用样式及示例
- url的路径设置问题
- Windows Azure HandBook (5) Azure混合云解决方案
- MariaDB Galera Cluster 部署(如何快速部署MariaDB集群)
- Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)
- Redis教程02——管道(Pipelining)
- Flume 1.4.0 User Guide
- Ubuntu配置OpenGL环境
- Jquery获得 selection的text 和 option值
- typedef和define具体的详细区别
- 阿里巴巴JAVA开发手册
- 微信小程序区分点击,长按事件
- Spring定义事物通知tx:advice
- Eclipse 02: 安装SVN插件
- php协程
- 067 Flume协作框架
- 如何轻松干掉svd(矩阵奇异值分解),用代码说话