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

输入:n = 3 输出:5
示例 2:
输入:n = 1 输出:1
123456,以3为根节点,左边有2种,右边有3种,总的为2*3
class Solution:
def numTrees(self, n: int) -> int:
dp=[0]*(n+1)
dp[0]=1
dp[1]=1
for i in range(2,n+1):
for j in range(0,n):
dp[i]+=dp[j]*dp[i-j-1]
return dp[-1]
这篇博客讨论了如何利用动态规划和递归方法解决计算不同形态的二叉搜索树的问题。在给定节点数n的情况下,通过计算中间节点的组合来得出所有可能的树结构总数。示例展示了对于n=3的情况,计算得到共有5种不同的二叉搜索树。代码实现中,使用动态规划数组dp,并通过双重循环计算每个节点作为根节点时的树的种类数。
1003

被折叠的 条评论
为什么被折叠?



