几个初始插入序列可以产生相同的二叉搜索树。
例如,四个这样的序列产生相同的树(这些树的序列总数为 20):
一行包含一系列不同的整数
一个整数,产生同一棵树的不同序列的数量。
计算产生不同二叉搜索树序列的数量
写一下注释
自己创建一个类,然后递归调用即可实现
进来学习一下
class Solution {
public:
vector<TreeNode*> helper(int left, int right){
vector<TreeNode*> ans;
if(left > right){
ans.push_back(nullptr);
}else if(left == right){
ans.push_back(new TreeNode(left));
}else{
for(int i = left;i <= right;++i){
vector<TreeNode*> l_tree = helper(left, i - 1);
vector<TreeNode*> r_tree = helper(i + 1, right);
for(int j = 0;j < l_tree.size();++j){
for(int k = 0;k < r_tree.size();++k){
TreeNode* root = new TreeNode(i);
root->left = l_tree[j];
root->right = r_tree[k];
ans.push_back(root);
}
}
}
}
return ans;
}
vector<TreeNode*> generateTrees(int n) {
if(n == 0)
return {};
return helper(1, n);
}
};