96. 不同的二叉搜索树
原始题目链接:https://leetcode-cn.com/problems/unique-binary-search-trees/
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 解题思路:
题目求解不同的二叉搜索树的个数,这种求不同的个数或不同走法等类似的问题,可以想到可能是要用动态规划的方法解题。动态规划三步走:定义状态,找状态转移方程,边界赋初始值。具体实现看代码及注释。
代码实现:
class Solution:
def numTrees(self, n: int) -> int:
T = [0] * (n + 1)
T[0], T[1] = 1, 1
for i in range(2, n + 1):
for j in range(1, i + 1):
T[i] += T[j - 1] * T[i - j]
return T[-1]
参考文献: https://leetcode-cn.com/problems/unique-binary-search-trees/solution/bu-tong-de-er-cha-sou-suo-shu-by-leetcode-solution/
|