https://leetcode-cn.com/problems/unique-binary-search-trees/
class Solution {
public:
vector<TreeNode *> backtrace(int b, int e) {
vector<TreeNode*> res;
if (b>e) {
res.push_back(nullptr);
return res;
}
for (int i=b; i <= e; i++) {
auto left_node_list = backtrace(b, i-1);
auto right_node_list = backtrace(i+1, e);
for (auto&left_node:left_node_list) {
for (auto&right_node:right_node_list) {
TreeNode* root = new TreeNode(i);
root->left = left_node;
root->right=right_node;
res.push_back(root);
}
}
}
return res;
}
vector<TreeNode*> generateTrees(int n) {
return backtrace(1, n);
}
};