首页 > 其他分享 >信息学奥赛初赛天天练-80-NOIP2015普及组-基础题5-错位排列、二叉树、完全二叉树、叶子节点、完全二叉树叶子节点

信息学奥赛初赛天天练-80-NOIP2015普及组-基础题5-错位排列、二叉树、完全二叉树、叶子节点、完全二叉树叶子节点

时间:2024-08-31 17:03:10浏览次数:12  
标签:信封 99 叶子 二叉树 错排 节点

NOIP 2015 普及组 基础题5

21 重新排列 1234使得每一个数字都不在原来的位置上,一共有( )种排法

22 一棵结点数为 2015的二叉树最多有( )个叶子结点

2 相关知识点

1) 错位排列

考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)

错排问题最早被尼古拉·伯努利和欧拉研究,因此历史上也称为伯努利-欧拉的装错信封的问题。

这个问题有许多具体的版本,如在写信时将n封信装到n个不同的信封里,有多少种全部装错信封的情况?

又比如四人各写一张贺年卡互相赠送,有多少种赠送方法?自己写的贺年卡不能送给自己,也是典型的错排问题

例题

有99封信,装到99个信箱中,正确的装法是,每封信装到正确的信箱中,即1号信装1号信箱,2号信装2号信箱

每封信都恰好装错的装法一个有多少种?

解析

D[i]表示i封信进行错排
此题需要计算D[99]
通过枚举可知,D[1]=0,D[2]=1,D[3]=2
此题可分2步
第1步
1 把信放入信箱,第1个信箱可以放2~99总共n-1封,即98封信,具体如下

第2步
2 要求装错,1号信不能放入1号信封,除1号信,其他都可以放入1号信封
考虑3号放入1号信封,此时分两种情况
1号信放入3号信和1号信不放入3号信箱2种情况

1号信放入3号信封时
1号信和3号信分别3号信封和1号信封,剩余2,4,5...99封信和2,4,5...99个信箱进行错排
满足97封信进行错排即D[n-2]=D[97]

1号信不放3号信封时
此时3号信已经放入1号信封,不需要考虑3号信和1号信封
把1号替换到3号信,此时1号信不能放入3号信封,观察信2,1,4,5...99和信封2,3,4,5...99,满足错排
98封信进行错排,这种情况错排D[n-1]=D[98]

根据乘法原理,所以错排的递推公式为

D[n] = (n-1) * (D[n-1] +D[n-1])
D[99]=98 * (D[98] + D[97] )
由前面枚举可知
D[1]=0,D[2]=1,D[3]=2
推出以下错排
D[4]=(4-1) * (D[4-1] + D[4-2])=3*(D[3]+D[2])=3 * (2+1)= 9
D[5]=(5-1) * (D[5-1] + D[5-2])=4*(D[4]+D[3])=4 * (9+2)= 44

2) 树的相关概念

根节点

在一颗树形结构中,最顶层的那个节点就是根节点了,所有的子节点都源自它发散开来。

父节点

树的父子关系和现实中很相似,若一个节点含有子节点,则这个节点称为其子节点的父节点。

叶子节点

直观来看叶子节点都位于树的最底层,就是没有分叉的节点,严格的定义是度为 0 的节点叫叶子节点。

非叶节点

在树中的所有节点,除去叶子节点都为非叶节点

二叉树

每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒

例如下面是一棵二叉树

完全二叉树

除了最下层,其他每层都饱满,去除最后一层是一棵满二叉树,最下层的结点都集中在该层最左边的若干位置上

完全二叉树最后1层叶子节点的数量
包括最后1层所有节点和倒数第2层的叶子节点数量
上图如果3没有子节点,也为叶子节点

3 思路分析

21 重新排列 1234使得每一个数字都不在原来的位置上,一共有( 9 )种排法

分析

根据错排公式
D[n] = (n-1) * (D[n-1] +D[n-1])
由前面枚举可知
D[1]=0,D[2]=1,D[3]=2
推出以下错排
D[4]=(4-1) * (D[4-1] + D[4-2])=3*(D[3]+D[2])=3 * (2+1)= 9

22 一棵结点数为 2015的二叉树最多有( 1008 )个叶子结点

分析

二叉树是每个节点最多有两个子节点的树结构。通常,我们称子节点为左子节点和右子节点。
为了最大化叶子节点的数量,我们应该尽量让每个非叶子节点只有两个子节点(即完全二叉树)
根节点高度为1,则高度为n的满二叉树所有节点树为2^n-1
2015个节点在高度10和11之间
2^10-1=1023
2^11-1=2047
完全二叉树最后一层都为叶子节点2015-1023=992个
倒数第2层有些没有子节点,也是叶子节点2047-2015=32,对应上一层会少一半32/2=16
所以总的叶子节点数量为992+16=1008

标签:信封,99,叶子,二叉树,错排,节点
From: https://www.cnblogs.com/myeln/p/18390489

相关文章

  • leetcode刷题day4|链表部分(24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、
    前言:链表练习的第二天,对链表的理解加深了24.两两交换链表中的节点这个题一开始的思路是用cur和next两个指针来做,但是绕来绕去绕迷糊了,最后超时了。把错误的代码放在下面警醒大家:主要问题出现在这两行代码,next.next发生了更改。next.next=next.next.next;next.next.nex......
  • 数据结构-了解树和二叉树
    一、了解树1.树的基本概念树是一种非线性数据结构,主要用于表示层次关系。它由节点和连接这些节点的边组成。树的形状像一棵倒立的树,根部在上,树枝向下延伸。2.树的定义树可以定义为一个空树或由以下性质的节点组成的非空集合:空树:没有任何节点的树。非空树:包含一个根节点......
  • 学习笔记4——二叉树(C++版)
    关于二叉树的算法题一般都是使用递归来实现,所以要想做好二叉树的算法题,要先学会递归算法的使用。一、如何创建一个二叉树1.声明一个树节点结构体structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(intx):val(x),left(nullptr),ri......
  • 分享丨【题单】链表、二叉树与一般树(前后指针/快慢指针/DFS/BFS/直径/LCA)
    作者:灵茶山艾府链接:https://leetcode.cn/circle/discuss/K0n2gO/一、链表注:由于周赛中的链表题可以转成数组处理,难度比直接处理链表低,故不标明难度分。带着问题去做下面的题目:在什么情况下,要用到哨兵节点(dummynode)?在什么情况下,循环条件要写while(node!=null)?什么情况......
  • KubeSphere 添加节点
    首先感谢这份博客https://my.oschina.net/u/4197945/blog/15510668  作者:运维有术星主 参考KubeSphere官网文档:https://www.kubesphere.io/zh/docs/v3.4/devops-user-guide/how-to-use/pipelines/create-a-pipeline-using-graphical-editing-panel/ 此份文档记录配置过......
  • 【408DS算法题】029基础-二叉树的层次遍历
    Index题目本文稍后补全,以下内容来自:https://blog.csdn.net/weixin_60702024/article/details/141615340分析实现总结题目本文稍后补全,以下内容来自:https://blog.csdn.net/weixin_60702024/article/details/141615340给定二叉树的根节点root,写出函数实现对二叉树的层......
  • 解读代码检查规则语言CodeNavi的表达式节点和属性
    本文分享自华为云社区《CodeNavi中代码表达式的节点和节点属性》,作者:Uncle_Tom。1.前期回顾《寻找适合编写静态分析规则的语言》根据代码检查中的一些痛点,提出了希望寻找一种适合编写静态分析规则的语言。可以满足用户对代码检查不断增加的各种需求;使用户能够通过增加或减少对检......
  • 「ComfyUI」增强图像细节只需要一个节点,SD1.5、SDXL、FLUX.1 全支持,简单好用!
    ‍‍‍‍‍前言今天给小伙伴们介绍一个非常简单,但又相当好使的一个插件。功能很简单,就是增加或者减少图像的细节,节点也很简单,就一个节点,只需要嵌入我们的ComfyUI的基础工作流中就可以了,随插随用。而且该插件不仅支持SD1.5和SDXL,甚至最新出的FLUX.1模型也是支持的......
  • openGauss-指定节点升级
    openGauss-指定节点升级可获得性本特性自openGauss3.1.0版本开始引入。特性简介在灰度升级下支持升级指定的部分节点,再升级剩余节点。客户价值在灰度升级下,提供一种升级指定部分节点的功能。保证在不中断业务的情况下,先升级部分节点再升级剩余节点。特性描述指定节点升......
  • 25版王道数据结构课后习题详细分析 第五章 树与二叉树 5.4 树、森林
    一、单项选择题————————————————————————————————————————解析:正确答案:D————————————————————————————————————————解析:森林与二叉树具有对应关系,因此,我们存储森林时应先将森林转换......