文章标题

Python code 代码有借鉴他人
range(n),共可以写出多少种二叉查找树
以record列表记录n时的种类数
当n=0时,空树,所以record[0]=1
n=1,左子树,右子树上都没有选择数的能力,所以record[1]=recodrd[0]*record[0]
n=2,首先令根节点为1:其左子树也没有数让其挑选,右子树有一个2可 以让其挑选,所以当根节点为1时:record[2]’=record[0]*record[1]
同理,可假设根节点为2:record[2]”=record[1]*record[0]
则:record[2]=record[2]’+record[2]”
所以:record[i]=record[0]*record[i-1]+record[1]*record[i-2]+…+record[i-1]*record[0]
code:

def Num(n):
    record=[0 for i in range(n+1)]
    record[0]=1
    i=1
    while i<n:
        j=0
        while j<i:
        record[i]+=record[j]*record[n-1-j]
        j+=1
    i+=1
    return record[n]
if __name__=='__main__':
    print(Num(3))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值