1 """
2 Given n, how many structurally unique BST's (binary search trees) that store values 1 ... n?
3 Example:
4 Input: 3
5 Output: 5
6 Explanation:
7 Given n = 3, there are a total of 5 unique BST's:
8
9 1 3 3 2 1
10 \ / / / \ \
11 3 2 1 1 3 2
12 / / \ \
13 2 1 2 3
14 """
15 """
16 数学分析,让每个值作为根结点,再讨论
17 左右子树结点的数量,能得到
18 res[1]=1
19 res[2]=res[1]*res[0]+res[0]*res[1]
20 res[3]=(res[0]*res[2])+(res[1]*res[1])+(res[2]*res[0])
21 令res[0]=1保证树的一边为空存在
22 """
23 class Solution:
24 def numTrees(self, n):
25 res = [0]*(n+1)
26 res[0], res[1] = 1, 1
27 for i in range(2, n+1):
28 for j in range(i):
29 res[i] += res[j]*res[i-j-1]
30 return res[n]