不同的二叉搜索树
Last updated
Last updated
问题简述
思路:动态规划
对一个有序数组,无论值是多少,它能构成的方法数都是一样的;
对一个长度为 n
的有序数组,取第 i
个值作为根节点,分成左右两个规模分别为 l=i-1
和 r=n-i
的子问题;
则选择该节点作为根节点的方法数 =
左子树的方法数 *
右子树的方法数;
得递推公式: dp(n) = sum( dp(i-1) * dp(n-i) )
,其中 i in [1, n+1)
;
实际上本题就是一个卡特兰数的实例;