【代码随想录】刷题记录(104)-不同的二叉搜索树

news/2025/1/19 11:25:07/

题目描述:

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

 

示例 1:

 

6d20955c0f400c926a6d7fc7a70ca500.jpeg

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

 

提示:

  • 1 <= n <= 19

 

我的作答:

思路是dp数组的每个元素i表示,i个不同元素组成的二叉搜索树数量;以dp[3]为例:

有dp[0]*dp[3],dp[1]*dp[2],dp[2]*dp[1],dp[3]*dp[0]四种情况,*左边为左子树,右边为右子树;因此可以得到递归公式dp[i] += dp[j-1]*dp[i-j]两层for循环,至于为什么是j-1,因为j-1+i-j=i-1,而dp[i]=dp[i]+dp[i-1],完成递归

初始化,因为一切都从dp[0]开始,所以dp[0]不能为0,设置为1,空结点也可以是树;

python">class Solution(object):def numTrees(self, n):""":type n: int:rtype: int"""if n==0: return 1dp = [0]*(n+1)dp[0] = 1 #初始化for i in range(1, n+1): #从1到nfor j in range(1, i+1): #从1到idp[i] += dp[j-1]*dp[i-j]return dp[n]

c3a7f535c5584b1f9cfe281f2412d0c4.png

 

参考:

差不多

 


http://www.ppmy.cn/news/1564398.html

相关文章

Ubuntu VPS 上 Docker 部署 Nginx 服务器详细教程

引言 本文将详细介绍如何在 Azure 100 学生订阅中创建一台 Ubuntu VPS&#xff0c;并在其上利用 Docker 部署 Nginx 服务器。我们将涵盖 Docker 和 Nginx 的基础概念&#xff0c;以及部署过程中所需的每个步骤。 Docker 简介 Docker 是一个开源的容器化平台&#xff0c;它可…

个人vue3-学习笔记

声明:这只是我个人的学习笔记(黑马),供以后复习用 。一天学一点,随时学随时更新。明天会更好的! 这里只给代码,不给运行结果,看不出来代码的作用我也该进厂了。。。。。 Day1 使用create-vue创建项目。 1.检查版本。 node -v 2.创建项目 npm init vue@latest 可…

Kotlin数据类

在一个规范的系统架构中&#xff0c;数据类通常占据着非常重要的的角色&#xff0c;它们用于将服务器端或数据库中的数据映射到内存中&#xff0c;为编程逻辑提供数据模型的支持&#xff1b;数据类通常需要重写equals()、hashCode()、toString()方法。&#xff08;hashCode()方…

二、点灯基础实验

嵌入式基础实验第一个就是点灯&#xff0c;地位相当于编程界的hello world。 如下为LED原理图&#xff0c;要让相应LED发光&#xff0c;需要给I/O口设置输出引脚&#xff0c;低电平&#xff0c;二极管才会导通 2.1 打开初始工程&#xff0c;编写代码 以下会实现BLINKY常亮&…

Microsoft Sql Server 2019 执行计划

1、什么是执行计划 用户提交的 sql 语句,数据库查询优化器,经过分析生成多个数据库可以识别的高效执行查询方式。然 后优化器会在众多执行计划中找出一个资源使用最少,而不是最快的执行方案,给你展示出来,可以是 文本格式,也可以是图形化的执行方案。 2、为什么要读懂执…

idea本地jar包添加到项目的maven库 mvn install:install-file

背景 最近在开发项目中需要对接海康威视摄像头&#xff0c;进行视频、照片等数据的获取保存&#xff1b;海康提供的sdk的jar包是自己开发的&#xff0c;在maven库中是找不到的&#xff0c;在项目中需要手动指定jar包路径 <dependency><groupId>com.haikang</g…

ansible自动化运维实战--服务端安装、环境配置与测试(1)

文章目录 一、准备5台虚拟机二、ansible服务端安装2.1、epel-release安装与配置2.2、查询ansible源信息2.3、安装ansible2.4、检查ansible安装状态和命令 一、准备5台虚拟机 本文使用的系统是centos9&#xff0c;5台机子的IP规划以及主机名如下&#xff1a; 主机名IPansible1…

Hooks 使用规则

Hooks 使用规则 命名规则 Hook 必须 useXxx 格式来命名。 PS&#xff1a;这种命名规则也很易读&#xff0c;简单粗暴 调用位置 Hook 或自定义 Hook &#xff0c;只能在两个地方被调用 组件内部其他 Hook 内部 组件外部&#xff0c;或一个普通函数中&#xff0c;不能调用…