欢迎光临散文网 会员登陆 & 注册

LeetCodeTop100_96. 不同的二叉搜索树

2023-03-22 16:57 作者:方猫zzz  | 我要投稿

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。


 


示例 1:



输入:n = 3

输出:5

示例 2:


输入:n = 1

输出:1


这题需要想到动态规划;

假设n个节点存在二叉排序树的个数是G(n),令f(i)为以i为根的二叉搜索树的个数

即有:G(n) = f(1) + f(2) + f(3) + f(4) + ... + f(n)

n为根节点,当i为根节点时,其左子树节点个数为[1,2,3,...,i-1],右子树节点个数为[i+1,i+2,...n],所以当i为根节点时,其左子树节点个数为i-1个,右子树节点为n-i,即f(i) = G(i-1)*G(n-i),

上面两式可得:G(n) = G(0)*G(n-1)+G(1)*(n-2)+...+G(n-1)*G(0)

代码如下:



LeetCodeTop100_96. 不同的二叉搜索树的评论 (共 条)

分享到微博请遵守国家法律