[LeetCode]96 不同的二叉搜索树

题目描述

给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?

示例:

输入: 3
输出: 5
解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:
   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
def numTrees(self, n):
"""
:type n: int
:rtype: int
"""
res = [0 for i in range(n+1)]
res[0],res[1] = 1,1
for i in range(2,n+1):
for j in range(i):
res[i] = res[j]*res[i-j-1] + res[i]
return res[n]