您的位置:首页 > 其它

文章标题

2017-03-15 17:15 169 查看
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

if __name__=='__main__':
print(Num(3))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: