leetcode动态规划(八)-不同的二叉搜索树

devtools/2024/10/22 16:32:52/

题目

96.不同的二叉搜索树

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

示例 1:

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

提示:

  • 1 <= n <= 19

思路

题目一看很难有思路,先从1开始一步步看看少数节点时的情况

当n=1的时候

当n=2的时候

当n=3的时候

当1是头节点的时候,左子树是空的,右子树有两个节点2和3,这里2和3的布局是和n=2的时候布局是一样的

当2是头节点的时候,左子树只有1这个节点,右子树只有3这个节点

当3是头节点的时候,右子树是空的,左子树有1和2两个节点,这里1和2的布局是和n=2的时候布局是一样的

dp[3]就是头节点为1的二叉搜索树数量+头节点为2的二叉搜索树数量+头节点为3的二叉搜索树数量

元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量

元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量

元素3为头结点搜索树的数量 = 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量

有2个元素的搜索树数量就是dp[2]。

有1个元素的搜索树数量就是dp[1]。

有0个元素的搜索树数量就是dp[0]。

所以dp[3] = dp[2] * dp[0] + dp[1] * dp[1] + dp[0] * dp[2]

接下来就是动规五步曲

1.确定dp数组(dp table)以及下标的含义

dp[i]表示第i个节点一共有dp[i]种不同的二叉搜索树

2.确定递推公式

dp[i] += dp[j-1]*dp[i-j]

3.dp数组如何初始化

其中dp[0]表示有0个节点,也是一种二叉树,可以等于1

4.确定遍历顺序

从递归公式:dp[i] += dp[j - 1] * dp[i - j]可以看出,节点数为i的状态是依靠 i之前节点数的状态。

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

5.举例推导dp数组

代码 

lass Solution:def numTrees(self, n: int) -> int:dp = [0]*(n+1)dp[0] = 1# dp[1] = 1# dp[2] = 2for i in range(1,n+1):for j in range(1,i+1):dp[i] += dp[j-1]*dp[i-j]return dp[-1]


http://www.ppmy.cn/devtools/127886.html

相关文章

Redis --- 第四讲 --- 常用数据结构 --- Hash、List

一、Hash哈希类型的基本介绍。 哈希表&#xff1a;之前学过的所有数据结构中&#xff0c;最最重要的。 1、日常开发中&#xff0c;出场频率非常高。 2、面试中&#xff0c;非常重要的考点。 Redis自身已经是键值对结构了。Redis自身的键值对就是通过哈希的方式来组织的。把…

探索 SVG 创作新维度:svgwrite 库揭秘

文章目录 **探索 SVG 创作新维度&#xff1a;svgwrite 库揭秘**背景介绍库简介安装指南基础函数使用实战场景常见问题与解决方案总结 探索 SVG 创作新维度&#xff1a;svgwrite 库揭秘 背景介绍 在数字艺术和网页设计领域&#xff0c;SVG&#xff08;Scalable Vector Graphic…

智能听诊器:宠物健康数据的守护者

智能听诊器的出现&#xff0c;为宠物健康数据的管理提供了新的解决方案。它能够收集宠物的生理数据&#xff0c;并将其安全地存储在云端&#xff0c;这样即使宠物主人更换设备或遗失数据&#xff0c;也能轻松恢复宠物的健康记录。这种数据的长期保存和备份&#xff0c;对于宠物…

超级会员卡积分小程序 可以收银的小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 超级会员卡积分可以收银源码系统是一款专为各类商业场景设计的综合性系统。它融合了收银管理、会员管理、积分管理等核心功能&#xff0c;为企业打造了一个全面而灵活的运营平台。 该系统采用先进的技术架构&#xff0c;确保系统的稳定性和可靠性。无论是小型零售店…

【网络安全】护网蓝队之应急响应

蓝队技术栈 Linux入侵排查 系统排查 一、查看历史命令 在Linux系统中&#xff0c;检查历史命令记录是安全审计的重要步骤之一&#xff0c;它可以帮助您了解系统上用户&#xff08;包括潜在的黑客&#xff09;的活动。以下是对您描述的重新表述和补充&#xff1a; 检查历史命…

WebGL编程指南 - WebGL入门

初识绘图流程、缓冲区、着色器、attribute和uniform变量 先画一个蓝色的正方形 html代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content&…

开源呼叫中心系统 FreeIPCC:大模型、知识库、企业官网与企业论坛社区的联动策略

大模型、知识库、企业官网与企业论坛社区的联动策略 作者&#xff1a;开源呼叫中心系统 FreeIPCC 在当今数字化时代&#xff0c;企业为了提升竞争力&#xff0c;不仅需要拥有强大的技术实力&#xff0c;还需要构建一套高效的信息管理和交互系统。大模型、知识库、企业官网以及…

IP地理位置定位系统之应用场景划分

IP地理位置定位系统是一个街道级别的、实时的IP地理位置查询系统。该系统采用超高精度IP实时定位技术&#xff0c;通过网络测量和大数据挖掘&#xff0c;对IP的地理位置和相关属性进行测量&#xff0c;在无需硬件支持的条件下&#xff0c;即可对被探测目标终端IP完成定位。 应…