class Solution {
public:
vector<TreeNode*> generateTrees(int n) {
if(n==0){
return vector<TreeNode*>{};
}
return build(1,n);
}
vector<TreeNode*>build(int lo,int hi){
vector<TreeNode*>res;
if(lo>hi){
res.emplace_back(nullptr);
return res;
}
for(int i=lo;i<=hi;i++){
vector<TreeNode*> leftTree=build(lo,i-1);
vector<TreeNode*> rightTree=build(i+1,hi);
for(auto left:leftTree){ //自动匹配类型
for(auto right:rightTree){
TreeNode* root=new TreeNode(i);
root->left=left;
root->right=right;
res.emplace_back(root);
}
}
}
return res;
}
};