给定一个序列快速计算不同二叉树的个数

2023-11-20

给定一个序列求二叉树的个数,就相当于n个数进栈然后得到一个出栈序列种树

假设用f(n)表示n个数的出栈序列数的种树,假设第一个出栈序数是k,则k将1~n的序列分为两个序列,其中一个是1 ~ k-1,序列个数是k-1;另一个是 k+1 ~ n,序列个数是n-k。此时,若k视为确定的一个序数,根据乘法原理,则f(n)等于序列个数 k-1的出栈种类数乘以序列个数为 n-k 的出栈序列数,即             f(n)  = f(n-1) * f(n-k)

由于k可以从1取到n,所以再根据加法原理,将k取不同值的序列的种数相加,得到的总序列的种数为:          f(n)  = f(0)f(n-1) + f(1)f(n-2) + ... +f(n-1)f(0)

而此式就是一个著名数列 ----- 卡特兰数的递推公式  

设卡特兰数的第n项为h(n),令h(0) = 1, h(1) = 1, 则卡特兰数满足递推公式:

h(n) = h(0)*h(n-1) + h(1)*h(n-2)+...+h(n-1)*h(0)(n>=2)

递推关系的解为:  h(n) = C(2n, n)/(n+1)    (n = 0, 1, 2, ...)

C(2n, n)表示在2n个元素中一次任意取n个个,有多少种取法

C(2n, n) = (2n)!/[n! * (2n-n)!]

例题:

先序序列为a, b, c, d的不同二叉树的个数是(B)

A.  13                B.  14                  C.  15                 D.  16

有先序遍历和中序遍历才可以唯一确定一个二叉树,所以该题可以看作“以先序序列a, b, c, d为入栈次序,则出栈个数是多少?”

利用该公式可以求出:

二叉树的个数:(2*4)!/[4! * 4!]/(4+1) = 7 *2 * 5/5 = 14

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

给定一个序列快速计算不同二叉树的个数 的相关文章

  • 这种双重实例是否有害,或者根本没有必要?

    在仔细阅读遗留资源时 我发现了这一点 DataSet myUPC new DataSet myUPC dbconn getDataSet dynSQL Resharper 正确地将其中的 new Dataset 部分 灰显 并建议 删除多余
  • C++,多语言/本地化支持

    向 C 程序添加多语言支持的最佳方法是什么 如果可能 应该从包含键值对 WelcomeMessage Hello s 之类的纯文本文件中读取语言 我想到了添加一个 localizedString key 函数来返回加载的语言文件的字符串 有
  • 从数组中输入多个数字,每个数字检查是否为整数

    每个人 我希望有人能帮我弄清楚C语言的一些东西 这是我第一次认真地做IT方面的作业 我没有经验 而且我正在电子学习中学习 所以老师的帮助不是很好 我需要用C语言开发控制台应用程序 用户需要输入10个整数 如果插入的数字不是整数 需要输出错误
  • Web 应用程序框架:C++ 与 Python

    作为一名程序员 我熟悉 Python 和 C 我正在考虑编写自己的简单 Web 应用程序 并且想知道哪种语言更适合服务器端 Web 开发 我正在寻找一些东西 它必须是直观的 我认识到 Wt 存在并且它遵循 Qt 的模型 我讨厌 Qt 的一件
  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • OpenGL,如何独立旋转对象?

    到目前为止我的代码 void display void glClear GL COLOR BUFFER BIT GL DEPTH BUFFER BIT Clear Screen And Depth Buffer glLoadIdentity
  • 找不到 HttpContextBase 命名空间

    public string GetCartId HttpContextBase context if context Session CartSessionKey null if string IsNullOrWhiteSpace cont
  • 如何在C中将2个4位无符号数组合成1个8位数

    我有 2 个 4 位数字 X0X1X2X3 和 Y0Y1Y2Y3 我想将它们组合起来 这样我就可以创建一个像这样的 8 位数字 X0X1X2X3 Y0Y1Y2Y3 gt X0Y0X1Y1X2Y2X3Y3 我知道如何连接它们以创建X0X1X1
  • File.ReadAllLines 或流读取器

    我们可以使用以下方式读取文件StreamReader http msdn microsoft com en us library vstudio system io streamreader或通过使用File ReadAllLines ht
  • 公共领域有哪些替代方案?

    我正在用 java 编写一个游戏 正如问题标题建议的那样 我在类中使用公共字段 暂且 据我所知 公共领域很糟糕 我有一些理解其中的原因 但如果有人能澄清为什么你不应该使用它们 那将不胜感激 问题是 从我所看到的来看 这似乎是合乎逻辑的 是使
  • WCF 客户端返回空数组 - XML 响应似乎正常

    我正在尝试为我们的 Intranet 上托管的 Web 服务创建一个简单的 WCF 客户端 C 使用 Fiddler 和 SoapUI 我可以看到请求和响应似乎正常 但是当我运行代码时返回一个空数组 我会尝试只粘贴相关的行 但会是很多东西
  • 使用 MessagingCenter 和标准 .NET 事件处理程序向感兴趣的各方通知更改有什么区别?

    使用 MessagingCenter 和标准 NET 事件处理程序向感兴趣的各方通知更改有什么区别 下面演示了同一事物的两个 未经测试的 实现 public class FooClass public event EventHandler
  • C++ 为非虚方法指定初始化

    我有 a h 如下所示 class A public void doSomething 0 然后我有 b h 如下所示 include a h class b public A public void doSomething 我只是想通过尝
  • C语言中的array、&array、&array[0]有什么区别? [复制]

    这个问题在这里已经有答案了 在学习C语言中的数组和指针时 我很困惑 为什么ch ch ch 0 彼此相等 而sptr sptr sptr 0 却不相等 这是我的源代码 int main void char ch 7 1 2 3 4 5 6
  • 将数字 n 拆分为 k 个不同数字的总和

    我有一个数字 n 我必须将它分成 k 个数字 使得所有 k 个数字都是不同的 k 个数字的总和等于 n 并且 k 最大 例如 如果 n 为 9 则答案应为 1 2 6 如果 n 为 15 则答案应为 1 2 3 4 5 这就是我尝试过的 v
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba
  • 如何在 C# 中停止程序进一步执行

    string FirstName Console ReadLine if FirstName Length gt 12 Console WriteLine if FirstName Length lt 3 Console WriteLine
  • 将数组显式衰减为指针

    最简洁 最惯用的方式是什么明确地将数组衰减为指针 例如 考虑您需要能够指导 SFINAE 或明确过载的情况 template
  • 使用可变参数模板函数计算多个值的平均值

    我正在尝试编写一个函数来确定任意数量参数的平均值 所有参数都具有相同的类型 出于学习目的 我尝试使用可变参数模板函数来做到这一点 这是我到目前为止所拥有的 template
  • 当前线程中的单例

    我的单身人士如下 public class CurrentSingleton private static CurrentSingleton uniqueInstance null private static object syncRoo

随机推荐

  • 虚拟机安装windows7的ISO镜像文件

    链接 https pan baidu com s 1stvzfq9UQFjlwAm4NzPpCg 提取码 wf67 复制这段内容后打开百度网盘手机App 操作更方便哦
  • React Hooks之useReducer

    useReducer 官网传送门 前言 const state dispatch useReducer reducer initialArg init useState 的替代方案 它接收一个形如 state action gt newSt
  • 【C++】VS code如何配置使用C++(手把手教学)

    博 主 米码收割机 技 能 C Python语言 公众号 测试开发自动化 获取源码 商业合作 荣 誉 阿里云博客专家博主 51CTO技术博主 专 注 专注主流机器人 人工智能等相关领域的开发 测试技术 VS code如何配置使用C 手把手教
  • centos 7修改打开文件数限制

    本文转自 http www tuicool com articles b2UNzm 未作修改 由于原文内容过多 在此仅列出部分内容 3 加大打开文件数的限制 open files 查看 ulimit n ulimit a vi etc se
  • Jmeter接口测试+压力测试

    jmeter是apache公司基于java开发的一款开源压力测试工具 体积小 功能全 使用方便 是一个比较轻量级的测试工具 使用起来非常简单 因为jmeter是java开发的 所以运行的时候必须先要安装jdk才可以 jmeter是免安装的
  • MathType 使用的解决方案

    目前遇到这种情况 MathType联网后显示证书失效 需要重新认证或者购买 或者是MathType成了精简版 只剩两行了 解决方案 分为两步 先禁止MathType联网 再删除注册表多余信息 1 禁止MathType联网 打开 控制面板 g
  • 解决server显示问题/cannot connect to X server

    1 mac下载XQuartz 安装 2 如下图打开终端 3 设置粘贴板 偏好设置 输入 勾选模拟三按键鼠标 偏好设置 粘贴板 勾选启用同步 偏好设置 粘贴板 勾选粘贴板改变时更新PRIMARY 4 连接服务器 ssh X user ip 5
  • 答题活动小程序V7.0

    答题活动小程序V7 0
  • Messari 2022年度报告9 - DAO亦有道

    大多数技术倾向于使边缘化的工人自动地做枯燥的任务 而区块链则自动去中心化 这不仅没有让出租车司机失业 而是让中心化的优步失业 同时让出租车司机直接与客户合作 Vitalik Buterin 我们前面在监管部分的讨论到了去中心化自治组织 DA
  • TypeScript从入门到精通(六)数组类型的定义

    常见且单一的数组 const numberArr string 123 456 789 数组有多种类型格式的 const AtWill string number 小爱好 18 数组中对象的定义 const obj name string
  • Lattice PCIe 学习 1

    我自己之前没有使用过lattice 平台 这次公司准备使用lattice 的PCIe IPCore 我准备在CSDN上写一系列学习笔记 记录使用过程 我使用的平台 win10 lattice diamond 3 12 这个软件下载地址 ht
  • Unity 安卓打包

    Unity打包的方式有很多种 自动打包和手动打包 今天小弟就鼓捣鼓捣unity手动打包 如果想动态打包的话 可以去看其他大佬的帖帖哈 unity打包先配置环境 下载unity的时候可以顺道把unity的安卓包下载下来 如果忘了也没事 可以从
  • [ 容器 ] Docker 的数据管理

    目录 一 Docker 的数据管理 1 1 数据卷 2 数据卷容器 二 端口映射 三 容器互联 使用centos镜像 四 Docker 镜像的创建 1 基于现有镜像创建 2 基于本地模板创建 3 基于Dockerfile 创建 3 1 联合
  • [776]github fork 别人的项目源作者更新后如何同步更新

    1 打开fork 过来的项目如下所示 2 点击new pull request 3 在进入的界面 后进行将左边的设置为你自己的仓库 fork 过来的源在右边 如下图 4 当选择完后会变成下图 5 接下来 将其展示出可以调整状态 右边改为源f
  • Linux修改hostname的几种方式,及遇到的问题

    之前修改主机名全都是采用的network方式 今天遇到点问题 发现hostname并非之前理解的那样 自己配置hostname的问题 这与系统的版本有关系么 腾讯云7 5的 百度云的是6 5 我自己在VMware上安装的6 5就没 etc
  • pybind播放视频

    解码挺快的 0 16ms 但是不知道为什么 还没传数据 特别慢 400 800ms一张图片 coding utf 8 import pysdk as demo import time filepath 0217 h264 start tim
  • Sprng依赖注入(三):构造方法注入是如何工作的?

    前言 这是Spring依赖注入系列的第三篇 前两篇主要分析了Spring bean依赖属性注入的两种方式 是字段注入和setter方法注入 单独比较这两种方式 会发现其过程和工作原理非常类似 那么构造方法注入会不会也和前两种比较类似呢 本篇
  • Android EditText TextWatcher应用实例

    Android TextWatcher应用实例 2012 02 21 15 52 12 转载 标签 android textwatcher 杂谈 分类 手机世界 1 使用TextWathcer限制输入字符个数 布局中EditText在and
  • 5类6类7类网线对比_3类、5类、超5类网线大家了解多少?

    随着时代的进步 网络成为大家必不可少的东西 在安装网络的时候网线是大家最容易忽略的部件 在组建网络时 大家大多都重视光猫 交换机 路由器等设备 但是对于网线 大家一般都不会挑剔 可是随着网络的提速 网线的重要性也越来越明显 今天蜗牛就和大家
  • 给定一个序列快速计算不同二叉树的个数

    给定一个序列求二叉树的个数 就相当于n个数进栈然后得到一个出栈序列种树 假设用f n 表示n个数的出栈序列数的种树 假设第一个出栈序数是k 则k将1 n的序列分为两个序列 其中一个是1 k 1 序列个数是k 1 另一个是 k 1 n 序列个