用Python,计算随机产生的数字产生的数列,所能组合产生二叉搜索树(BST)的数量

用Python,计算随机产生的数字产生的数列,所能组合产生二叉搜索树(BST)的数量
例子如图

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

img

img

我想要达到的结果

写一下注释,测试如图例子可以通过测试,时间复杂度限制4秒,内存限制256M
第一行数据输入接口可以使用使用li = input().split()接收测试系统任意参数为数列,也可以为其他形式。
数据输出为可以组合产生BST的数量

import random
class BST():
    left = None
    right = None
    data = None
    def __init__(self, data):
        self.data = data
# 插入操作
def BSTInsert(previous, root, value):
    #root代表上一次的节点,previou代表要插入的节点的父母
    #遍历到外层时,从19或20行的right或者left为空时,则新申请节点,插入到父母下面
    if root is None:
        if value > previous.data:#若大于双亲的值,则插入到父母右子树
            previous.right = BST(value)
        else :#否则,插入父母到左子树上
            previous.left = BST(value)
        return True
    elif value==root.data:#和树中某个节点值相等,插入失败。因为BST要求 左<跟<右
        return False
    elif value > root.data:#继续深入递归,若value > 当前节点,转向右子树去递归。
                           #直到root.right或者root.left节点为空,说明走到头了,此时转到11行,执行插入
        return BSTInsert(root, root.right, value)
    else:
        return BSTInsert(root, root.left, value)
#中序遍历
def InOrder(root):
    if root is not None:
        InOrder(root.left)
        print(root.data)
        InOrder(root.right)
#先序遍历
def PreOrder(root):
    if root is not None:
        print(root.data)
        InOrder(root.left)
        InOrder(root.right)
#后序遍历
def PostOrder(root):
    if root is not None:
        InOrder(root.left)
        InOrder(root.right)
        print(root.data)

def BSTSearch(root, value):
    if root is None:
        return None
    while root is not None:
        if value > root.data:
            root = root.right
        elif value < root.data:
            root = root.left
        else:
            return root
    return None
#根节点10
root = BST(10)
#插入范围0到500的随机数
for i in range(100):
    BSTInsert(None, root, random.randint(0,500))
#中遍历输出结果:从小到大
InOrder(root)
#搜索111的地址
print(BSTSearch(root, 111))

每个序列先排序,然后挨个生成二插搜索树

你学算法就是通过别人代码吗?

https://blog.csdn.net/weixin_39697660/article/details/111427042?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-4.pc_feed_download_top3ask