刷题65:不同的二叉搜索树

news2024/11/23 21:33:35

题意描述:

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

 思路:

1、确定dp数组(dp table)以及下标的含义
dp[i] : 1到i为节点组成的二叉搜索树的个数为dp[i]。

也可以理解是i个不同元素节点组成的二叉搜索树的个数为dp[i] ,都是一样的。

2、确定递推公式
在上面的分析中,其实已经看出其递推关系, dp[i] += dp[以j为头结点左子树节点数量] * dp[以j为头结点右子树节点数量]

j相当于是头结点的元素,从1遍历到i为止。

所以递推公式:dp[i] += dp[j - 1] * dp[i - j]; ,j-1 为j为头结点左子树节点数量,i-j 为以j为头结点右子树节点数量

3、初始化dp[0] = 1

4、确定遍历顺序
首先一定是遍历节点数,从递归公式:dp[i] += dp[j - 1] * dp[i - j]可以看出,节点数为i的状态是依靠 i之前节点数的状态。

那么遍历i里面每一个数作为头结点的状态,用j来遍历。

完整的C++代码如下:

class Solution {
public:
    int numTrees(int n) {
        vector<int> dp(n + 1);
        dp[0] = 1;
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= i; j++){
                dp[i] += dp[j - 1] * dp[i - j];
            }
        }
        return dp[n];
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/531426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OA系统功能测试分析和学习教程(超详细)

OA系统可以简单快速地建立企业级的办公自动化系统。 办公自动化系统是员工及管理者使用频率最高的应用系统&#xff0c;可以极大提高公司的办公效率&#xff0c;帮助企业节省数字化、信息化办公的成本。本文中的OA系统来自于下面的资源&#xff1a; 包含诸多系统各功能模块&…

个人黄金投资要注意什么?如何降低黄金投资交易风险

黄金保值性强&#xff0c;自带避免功能&#xff0c;因此在投资者的理财组合中总能看到它的身影。但不可否认的是&#xff0c;黄金投资交易风险仍然存在。投资者在入场前应该多方了解&#xff0c;减小风险的危害。 黄金投资交易风险一、市场波动 全球影响黄金价格的因素有很多&…

51单片机中断系统

中断系统 1、中断介绍2、中断结构及相关寄存器中断满足的条件以及使用 3、外部中断实验外部中断介绍外部中断配置硬件设计软件设计 1、中断介绍 我们先来举一个生活事例&#xff1a; 你打开火&#xff0c;烧上一壶水。然后去洗衣服&#xff0c;在洗衣服的过程中&#xff0c;突…

python进程

队列 简介 在windows中&#xff0c;启动一个程序资源等于一个进程&#xff0c;进程是由多个线程组成的&#xff0c;进程理解为管理层&#xff0c;而线程是工人 通俗解释&#xff1a; 进程&#xff1a;能够完成多任务&#xff0c;比如&#xff0c;在同一台电脑上能够同时运行…

苹果手机怎么删除软件?彻底删除顽固app的3个方法!

案例&#xff1a;苹果手机有流氓软件删不掉怎么办&#xff1f; 【好烦&#xff0c;在网页上误点下载了一些流氓软件&#xff0c;怎么都删不掉&#xff0c;我该怎么办&#xff1f;求大神支招&#xff01;】 在苹果手机上删除软件通常是一个简单的过程&#xff0c;但有时候可能会…

【Java 基础】反射

反射是框架的灵魂。动态代理、很多框架&#xff08;SoringIOC、AOP等&#xff09;中都用到了反射。 概述&#xff1a; JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff08;包括私有的&#xff09;&#xff1b;对…

一款高效的企业级表格可视化搭建解决方案DripTable

DripTable 是京东零售推出的一款用于企业级中后台的动态列表解决方案&#xff0c;项目基于 React 和 JSON Schema&#xff0c;旨在通过简单配置快速生成页面动态列表来降低列表开发难度、提高工作效率。 DripTable 目前包含以下子项目&#xff1a;drip-table、drip-table-gene…

SpringBoot实战(四)获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)

一&#xff1a;获取参数 SpringBoot提供的获取参数注解包括&#xff1a;PathVariable&#xff0c;RequestParam&#xff0c;RequestBody,三者的区别如下表&#xff1a; 二、java基础&#xff08;spring注解PathVariable和RequsetParam的区别还有RequestBody&#xff09; Path…

“AI孙燕姿”们侵了谁的权?

“2003年大火的歌手&#xff1a;孙燕姿&#xff1b;2023年大火的歌手&#xff1a;AI孙燕姿”。在B站&#xff0c;这条评论获赞2800多&#xff0c;而被网友们集体点赞的是用AI克隆孙燕姿声音后演唱其他歌曲的视频。 截止目前&#xff0c;Up主们打造的“AI孙燕姿”已翻唱了百余首…

每日学术速递5.14

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.An Inverse Scaling Law for CLIP Training 标题&#xff1a;CLIP 训练的逆比例定律 作者&#xff1a;Xianhang Li, Zeyu Wang, Cihang Xie 文章链接&#xff1a;https://arxiv.…

【Linux】Linux编辑器-gcc/g++使用

目录 一、背景知识 二、gcc是如何完成的 1、预处理(进行宏替换) 2、编译(生成汇编) 3、汇编(生成机器可识别代码) 4、链接(生成可执行文件或库文件) 4.1、静态库 4.2、动态库 4.3、动静态库的比较 三、gcc常见的选项 一、背景知识 计算机是二进制读取文件的&#xff0c;我们…

HHDBCS及HHDESK的资源加密功能

安全性&#xff0c;是头等重要的事情。HHDBCS及HHDESK均有一项实用功能&#xff0c;资源加密。 HHDBCS 打开HHDBCS&#xff0c;出现连接管理界面&#xff08;或者在运行过程中&#xff0c;点击连接管理&#xff09;&#xff0c;点击如下图箭头所指处的图标即可 HHDESK 点击主…

全球范围内的数字化时代,挑战和价值有哪些?

近年来&#xff0c;数字经济的发展趋势越来越明显&#xff0c;尤其是随着疫情的影响&#xff0c;加速了传统产业向数字化、网络化和智能化产业的转型和升级。全球数字经济规模不断扩大&#xff0c;体量连年增长&#xff0c;根据中国信息通信研究院报告显示&#xff0c;2019年全…

VMware虚拟机,匹配库中的文件系统文件夹层次结构

不需要把虚拟机文件复制到本地就不需要勾选“匹配库中的文件系统文件夹层次结构”这个选项。 但是&#xff0c;即便是勾选“匹配库中的文件系统文件夹层次结构”这一选项&#xff0c;也可以不勾选下一个选项卡的任何选项。

Midjourney AI 官方中文版已开启内测申请;OpenAI 正准备向公众发布一款新的开源语言模型。

&#x1f680; Midjourney AI 官方中文版已开启内测申请&#xff0c;搭载在 QQ 频道上&#xff0c;召唤机器人进行作画。 Midjourney AI 官方中文版已开启内测申请&#xff0c;搭载在 QQ 频道上&#xff0c;召唤机器人进行作画。 可调用 MJ 和 Niji 的最新模型和所有参数&…

Python源码怎么运行?

要运行Python源码&#xff0c;您需要安装Python解释器。Python解释器是一种软件&#xff0c;它可以读取Python源代码并将其转换为计算机可以理解和执行的指令。 在Windows操作系统上运行Python源代码的步骤&#xff1a; 在您的计算机上下载并安装Python解释器。您可以从Pyth…

COM接口规则的存在是有原因的

可能有些人认为接口上的 COM 接口规则没有必要设计的那么严格&#xff0c;但我想说的是&#xff0c;这些规则的存在是有原因的。 假设你在你的产品代码中新增加了版本号为 N 的接口&#xff0c;由于这个接口是内部使用的&#xff0c;没有任何公开文档。所以你可以随意修改它&a…

Sentinel 热点参数限流

何为热点&#xff1f;热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据&#xff0c;并对其访问进行限制。比如&#xff1a; 商品 ID 为参数&#xff0c;统计一段时间内最常购买的商品 ID 并进行限制用户 ID 为参数&#xff0c;针对一段时间…

Prompt工程师指南[资料整合篇]:Prompt最新前沿论文整理合集、工具和库推荐、数据集整合、推荐阅读内容等,超全面资料

Prompt工程师指南[资料整合篇]&#xff1a;Prompt最新前沿论文整理合集、工具和库推荐、数据集整合、推荐阅读内容等&#xff0c;超全面资料 1.论文合集 The following are the latest papers (sorted by release date) on prompt engineering. We update this on a daily bas…

Ozeki VOIP SIP SDK 10.3.199 Crack

Ozeki VOIP SIP SDK 使用Ozeki VoIP SIP SDK&#xff0c;您有机会制作自己的VoIP产品&#xff0c;例如软电话&#xff0c;甚至您自己的PBX。 Ozeki VoIP SIP SDK介绍 Ozeki VoIP SIP SDK 是一个软件开发工具包&#xff0c;允许您使用 SIP 协议进行 VoIP 呼叫。它可以很容易地…