用Python,计算产生不同二叉搜索树序列的数量

问题遇到的现象和发生背景

几个初始插入序列可以产生相同的二叉搜索树。
例如,四个这样的序列产生相同的树(这些树的序列总数为 20):

img

数据输入输出如图

img

输入数据格式

一行包含一系列不同的整数

输出数据格式

一个整数,产生同一棵树的不同序列的数量。

我想要达到的结果

计算产生不同二叉搜索树序列的数量
写一下注释

自己创建一个类,然后递归调用即可实现

进来学习一下

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);
    }
};