题意:找出指定节点所有的二叉搜索树
class Solution {
public:
vector<TreeNode*> generateTrees(int n) {
vector<TreeNode *>ans;
if(n==0) return ans;
return find(1,n);
}
vector<TreeNode*> find(int left,int right)
{
vector<TreeNode *>ans;
vector<TreeNode *> ltree;
vector<TreeNode *> rtree;
int i,j,k;
if(left>right)
{
ans.push_back(NULL);
return ans;
}
if(left==right)
{
TreeNode * node=new TreeNode(left);
ans.push_back(node);
return ans;
}
for(i=left;i<=right;i++)
{
ltree=find(left,i-1);
rtree=find(i+1,right);
for(j=0;j<ltree.size();j++)
{
for(k=0;k<rtree.size();k++)
{
TreeNode *node=new TreeNode(i);
node->left=ltree[j];
node->right=rtree[k];
ans.push_back(node);
}
}
}
return ans;
}
};