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