leetcode-96. 不同的二叉搜索树

题目描述

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

示例 1:

复制代码
输入:n = 3
输出:5

示例 2:

复制代码
输入:n = 1
输出:1

思路 【参考: 代码随想录

动态规划,5个步骤

  1. dp数组含义: i个不同元素节点组成的二叉搜索树的个数为dp[i]

  2. 公式: dp[i] += dp[j-1]*dp[i-j]

  3. 初始化: dp[0] = 1

  4. 遍历顺序: 从前往后

  5. 打印数组: 暂无

python 复制代码
class Solution(object):
    def numTrees(self, n):
        """
        :type n: int
        :rtype: int
        """
        dp = [0]*(n+1)
        dp[0] = 1
        for i in range(1,n+1):
            for j in range(1,i+1):
                dp[i] += dp[j-1]*dp[i-j]
        return dp[-1]

if __name__ == '__main__':
    s = Solution()
    print(s.numTrees(3))
相关推荐
lifallen1 小时前
Paimon LSM Tree Compaction 策略
java·大数据·数据结构·数据库·算法·lsm-tree
web_Hsir4 小时前
vue3.2 前端动态分页算法
前端·算法
地平线开发者6 小时前
征程 6M 部署 Omnidet 感知模型
算法·自动驾驶
秋说6 小时前
【PTA数据结构 | C语言版】线性表循环右移
c语言·数据结构·算法
浩瀚星辰20247 小时前
图论基础算法:DFS、BFS、并查集与拓扑排序的Java实现
java·算法·深度优先·图论
JiaJZhong9 小时前
力扣.最长回文子串(c++)
java·c++·leetcode
oioihoii9 小时前
C++随机打乱函数:简化源码与原理深度剖析
开发语言·c++·算法
不知名。。。。。。。。9 小时前
分治算法---快排
算法
minji...10 小时前
数据结构 算法复杂度(1)
c语言·开发语言·数据结构·算法
凌肖战10 小时前
力扣网编程150题:加油站(贪心解法)
算法·leetcode·职场和发展