1. 动态规划
设G(n)是以1 … n为节点组成的二叉搜索树的种数,f(i)是以i为根节点的二叉搜索树的种数,则有:G(n) = f(1) + f(2) + ... + f(n)
以f(i)为例,其左子树为1 … i-1节点组成的二叉搜索树,右子树为i+1 … n节点组成的二叉搜索树,即f(i) = G(i - 1) * G(n - i)
综上,有:G(n) = G(0)G(n-1) + G(1)G(n-2) + ... + G(n-1)G(0)
时间复杂度:(n^2),需要算n个G(i),每个需要O(n)。
空间复杂度:O(n)。  
| 1 | class Solution { |