1. Leetcode 95 给定整数n,输出所有的BST二叉搜索树序列
class Solution {
public:
vector<TreeNode*> generateTrees(int n) {
vector<TreeNode*> ans;
ans = getBST(1,n);
return ans;
}
vector<TreeNode*> getBST(int from,int to)
{
vector<TreeNode*> temp;
if(from>to)
{
temp.push_back(nullptr);
}
else if(from==to)
{
temp.push_back(new TreeNode(from));
}
else
{
for(int i=from;i<=to;++i)
{
vector<TreeNode*> lefttree = getBST(from,i-1);
vector<TreeNode*> righttree = getBST(i+1,to);
for(int p=0;p<lefttree.size();++p)
{
for(int q=0;q<righttree.size();++q)
{
TreeNode* root = new TreeNode(i);
root->left = lefttree[p];
root->right = righttree[q];
temp.push_back(root);
}
}
}
}
return temp;
}
};