不同的二叉搜索树
问题简述
给你一个整数 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