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

示例
输入:n = 3 输出:5
解题思路
五部曲
1、确定数组 dp[i],从 1 到 i 为节点组成二叉搜索树的个数
2、递推公式 dp[i] += dp[j - 1] * dp[i - j]
3、初始化 dp[0] = 1;
4、dp[i] += dp[j - 1] * dp[i - j]
5、推导举例
上代码
class Solution { public int numTrees(int n) { //初始化 dp 数组 int[] dp = new int[n + 1]; //初始化0个节点和1个节点的情况 dp[0] = 1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { //对于第i个节点,需要考虑1作为根节点直到i作为根节点的情况,所以需要累加 //一共i个节点,对于根节点j时,左子树的节点个数为j-1,右子树的节点个数为i-j dp[i] += dp[j - 1] * dp[i - j]; } } return dp[n]; } }
重难点
附:学习资料链接
标签:
动态规划
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了