LeetCode 96. 不同的二叉搜索树

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

示例 1:

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

提示:

  • 1 <= n <= 19

思路:

本题可采用动态规划解决。dp[ i ] 表示从 节点 1 到节点 i 分别作为根节点 所形成的二叉搜索树的种数之和。

确定递推公式:dp[ i ] += dp [ j -1 ] * dp[ i - j ],其中 j 是当前作为根节点的节点,取值范围是 [ 1, i ],当 节点 j 作为根节点时,其 左子树的节点个数为 j -1,所以左子树形成的二叉搜索树的种数为 dp[ j - 1 ],其右子树的节点个数为 i - j,所以右子树形成的二叉搜索树的种数为 dp [ i - j ],故节点 j 作为根节点时形成的二叉搜索树的种数为 dp[ j - 1] * dp[ i - j ]。

初始化时, 0 个节点 时令 dp[ 0 ] 为 1,表示一棵空树。 遍历顺序:由于 dp[ i ] 依赖 dp[ j-1 ] 和 dp [ i - j ],所以要计算 dp[ n ],则需要先计算 dp [ 1 ] ~ dp[ n- 1 ],因此要从前往后依次遍历计算出每一个 dp [ i ](1<= i <= n)。

代码:

class Solution {
    public int numTrees(int n) {
        //初始化 dp,dp[i]表示从节点1到节点i分别作为根节点组成的二叉搜索树的种数之和
        int[] dp = new int[n+1];
        //初始化dp[0]
        dp[0] = 1;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=i;j++){
                //以 j 为根节点的二叉搜索树的左子树有 j-1 个节点,右子树有 i-j 个节点
                dp[i]+= dp[j-1]*dp[i-j];
            }
        }
        return dp[n];
    }
}

参考:代码随想录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯嵌入式】六、真题演练(一)-1演练篇:第 14 届真题

温馨提示&#xff1a; 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程&#xff0c;我打算先自己做一遍&#xff0c;把遇到的问题和不同之处记录到演练篇&#xff0c;然后再返回来仔细研究一下&#xff0c;找到最佳的解题方法记录到研究篇。 目录 解题记录&…

2023年EI会议论文已见刊/检索进展汇总

2023年录用的会议论文已在SPIE、ACM、IEEE等出版社正式上线见刊&#xff0c;并已陆续完成EI Compendex数据库收录&#xff0c;详情如下&#xff1a; EIECT 2023——IEEE出版&#xff0c;并完成EI收录 会议信息&#xff1a; 第三届电子信息工程与计算机技术国际学术会议&…

MapReduce [OSDI‘04] 论文阅读笔记

原论文&#xff1a;MapReduce: Simplified Data Processing on Large Clusters (OSDI’04) 1. Map and Reduce Map&#xff1a;处理键值对&#xff0c;生成一组中间键值对Reduce&#xff1a;合并与同一中间键相关的所有中间值process overview&#xff1a;分割输入数据&#x…

EF数据持久化(三层架构,公司查,改)

效果图 Model设置具体流程在下面链接中 https://blog.csdn.net/Mr_wangzu/article/details/136805824?spm1001.2014.3001.5501 DAL using System; using System.Collections.Generic; using System.Linq; using System.Web; using WebApplication2.Models; namespace WebAppli…

力扣由浅至深 每日一题.20 环形链表

山穷水尽&#xff0c;柳暗花明 —— 24.4.3 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

实战webSocket压测(一)webSocket背景

一、什么是webSocket&#xff1f; WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许在客户端&#xff08;如Web浏览器&#xff09;和服务器之间建立持久的连接&#xff0c;实现全双工通信。 二、WebSocket出现的背景 1、http协议背景&#xff1a; 以B/S架构为例…

【数据结构】学会了波兰表达式与逆波兰表达式,怎么能允许自己不会通过计算机进行表达式转换呢?

栈在表达式转换中的应用 导读一、中缀表达式二、表达式的组成部分2.1 单一运算符2.2 不带括号的混合运算符2.3 带括号的混合运算符 三、表达式改写3.1 问题分析3.2 算法设计3.3 算法实现3.4 算法测试 结语 导读 大家好&#xff01;很高兴又和大家见面啦&#xff01;&#xff0…

moveit中RM65-B适配拓展轴一体规划

Moveit适配拓展轴 1.概述 睿尔曼关节模组和机械臂连接时可以被自动识别&#xff0c;并且睿尔曼机械臂提供同时控制机械臂和拓展关节模组的通信协议&#xff08;限一个拓展关节&#xff09;。因此&#xff0c;用户可以在RM机械臂的基础上添加外部关节&#xff0c;构建新的机器…

顶级Layer-3 通证正在飙升,布局龙头Degen Chain(含bitget教程)

近期以太坊生态内&#xff0c;Base 一枝独秀&#xff0c;其 TVL 突破 25 亿美元&#xff0c;创历史新高。并且生态内的社交文化和 DeFi 板块的龙头都很惹眼。 Farcaster 协议上的 meme 币 DEGEN 目前价格为 0.018 美元&#xff0c;7 日涨幅达 376%。 DEGEN 兴起于 Farcaster 的…

备考2024年思维100春季线上比赛?来做做官方模拟题(附答案)

2024年春季思维100活动第一阶段线上比赛&#xff08;4月20日&#xff0c;星期六&#xff0c;上午&#xff09;的报名正在进行中&#xff0c;报名时间截止到为4月6日&#xff08;本周六&#xff09;&#xff0c;请设置好闹钟提醒以免错过。更多安排和需要提前了解的关键点可以见…

制作一个一键运行的10多M的go-cqhttp最简docker镜像

一直有个想自己部署一个QQ机器人&#xff0c;虽然成功完成在Windows环境下基于 go-cqhttp 的搭建工作。但考虑到我有一台常年在线的群晖 NAS&#xff0c;并且已经配置并启用了 Docke r服务&#xff0c;可否将go-cqhttp 迁移至 NAS 上的 Docker 容器中运行吗呢&#xff1f;同时&…

rasa trian 报错解决---Project validation completed with errors.

rasa train 过程中&#xff1a;出现一下问题&#xff1b; Project validation completed with errors. 解决措施:python 3.10版本&#xff0c;rasa 3.6.19, 降低版本 pip3 install rasa3.5.17 -i https://pypi.tuna.tsinghua.edu.cn/simple成功解决

洛谷P1007独木桥(暴力枚举)

题目描述&#xff1a; 说明提示&#xff1a; 思路&#xff1a; 本题的核心思想在于&#xff1a;两人相遇后&#xff0c;转身不计入时间&#xff0c;所以我们可以看作直接穿过去&#xff0c;那么一个人走下桥的时间有两种&#xff0c;一个是本身所在位置x&#xff0c;另一个是l…

CSS基础选择器 小案例复习(画三个小盒子)

&#xff08;大家好&#xff0c;前面我们学习了基础的选择器&#xff0c;俗话说&#xff1a;温故而知新。所以今天我们将通过小案例来复习前面学过的小知识点。另&#xff0c;十分感谢大家对我文章的支持❤️&#xff09; 通过这个案例复习两个地方&#xff1a; 类选择器的使用…

MySQL的基本操作(超详细)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 &#x1f4d4;&#xff08;零基础&#xff09;专栏&#xff1a;MSQL数据库 欢迎&#x1f64f;点赞&…

基于k8s的web服务器构建

文章目录 k8s综合项目1、项目规划图2、项目描述3、项目环境4、前期准备4.1、环境准备4.2、ip划分4.3、静态配置ip地址4.4、修改主机名4.5、部署k8s集群4.5.1、关闭防火墙和selinux4.5.2、升级系统4.5.3、每台主机都配置hosts文件&#xff0c;相互之间通过主机名互相访问4.5.4、…

iMessage是怎么成为“黑灰产的乐园”

垃圾/骚扰/色情/钓鱼短信已经成为苹果手机iMessage无法解决的难题。几乎每一位iPhone用户都曾收到过这类短信&#xff0c;被吐槽“每一个iPhone里都藏着一个澳门葡京赌场”。 对于这些垃圾短信&#xff0c;最好的办法就是别点开直接删除&#xff0c;上当/被骗的第一步就是从点开…

go包下载时报proxyconnect tcp: dial tcp 127.0.0.1:80: connectex错误的解决方案

一大早的GoLand就开始抽风了&#xff0c;好几个文件import都红了&#xff0c;于是我正常操作点击提示的sync&#xff0c;但是却报了一堆错&#xff1a; go: downloading google.golang.org/grpc v1.61.1 go: downloading google.golang.org/genproto v0.0.0-20240228224816-df9…

Lambda表达式,Stream流

文章目录 Lambda表达式作用前提函数式接口特点 语法省略模式和匿名对象类的区别 Stream流思想作用三类方法获取方法单列集合(Collection[List,Set双列集合Map(不能直接获取)数组同一类型元素(Stream中的静态方法) 常见的中间方法终结方法收集方法 Optional类 Lambda表达式 作用…

C 回调函数的两种使用方法

对回调&#xff08;callback&#xff09;函数的一点粗陋理解&#xff0c;在我小时候&#xff0c;隔壁村有家月饼小作坊&#xff08;只在中秋那段时间手工制作一些月饼出售&#xff0c;后来好像不做了&#xff09;&#xff0c;做出的月饼是那种很传统很经典的款式&#xff0c;里…