当前位置:网站首页>【力扣】96. 不同的二叉搜索树
【力扣】96. 不同的二叉搜索树
2022-08-09 14:58:00 【漆黑丶】
题目:
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
示例 1:
输入:n = 3
输出:5
示例 2:
输入:n = 1
输出:1
提示:
1 <= n <= 19
答案:
class Solution {
public int numTrees(int n) {
/** 动态规划 假设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) */
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i < n + 1; i++){
for(int j = 1; j < i + 1; j++){
dp[i] += dp[j-1] * dp[i-j];
}
}
return dp[n];
}
}
边栏推荐
猜你喜欢
随机推荐
AlexNet pytorch实现
仪表盘
研究生工作周报(第十三周)
《身体是革命的本钱,该注意时还是要注意!》
【SQL】175. 组合两个表
交叉编译 OpenSSL
【深度学习】前向传播和反向传播(四)
NoUniqueBeanDefinitionException和JSON乱码处理出现异常
【Postgraduate Work Weekly】(Week 8)
hugging face tutorial - Chinese translation - fine-tuning a pre-trained model
【力扣】207. 课程表
【Postgraduate Work Weekly】
【知识分享】知识链路-Modbus通信知识链路
【Leetcode】433. 最小基因变化
【研究生工作周报】
分类任务系列学习——总述
【工具使用】Modbus Poll软件使用详解
模仿微信金钱输入框规则(修复7.0手机崩溃)
研究生工作周报
【力扣】617. 合并二叉树