朋友们,今天我们要讨论的是 LeetCode 第96题——不同的二叉搜索树。这道题目让我们计算从 1 到 n 的整数能构建多少种不同的二叉搜索树(BST)。有点像是我们要用不同的方式种植花园里的花,每一种种植方法都需要符合二叉搜索树的规则。别担心,咱们会一起用多种解法来解决这个问题,逐一剖析每一种解法的思路和代码实现。
文章目录
题目描述
题目要求是:给定一个整数 n,计算从 1 到 n 所能组成的不同的二叉搜索树的个数。
例如:
输入: 3
输出: 5
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:
1 3 3 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3
解题思路
针对这个题目,我们可以采用以下几种解法:
- 递归法:通过递归计算每个节点作为根节点时的BST数量。
- 动态规划法:利用动态规划存储子问题的解,从而避免重复计算。
方法一:递归法
递归法思路
递归法的核心在于理解每个数 i
作为根节点时,左子树由 1
到 i-1
构成,右子树由 i&