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