Given n, how many structurally unique BST's (binary search trees) that store values 1...n?数组
For example,
Given n = 3, there are a total of 5 unique BST's.spa
1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3
Tree Dynamic Programming
UniqueTrees[2] = UniqueTrees[0] * UniqueTrees[1] (1为根的状况)
+ UniqueTrees[1] * UniqueTrees[0] (2为根的状况。
再看一遍三个元素的数组,能够发现BST的取值方式以下:
UniqueTrees[3] = UniqueTrees[0]*UniqueTrees[2] (1为根的状况)
+ UniqueTrees[1]*UniqueTrees[1] (2为根的状况)
+ UniqueTrees[2]*UniqueTrees[0] (3为根的状况)
因此,由此观察,能够得出UniqueTrees的递推公式为
UniqueTrees[i] = ∑ UniqueTrees[0...k] * [i-1-k] k取值范围 0<= k <=(i-1)code