随机树
对这题的第一问,我们可以感性地理解一下
设
那么增加一个叶子(即一次拓展操作)所有叶子的总深度增加了
所以
想一下为什么这里可以这么理解,而下一问求深度却不可以。因为对任意一张确定的图,你随便添加两个节点,总深度一定是增加
然后就可以利用样例进行验证了
如果不放心我们就老老实实地推式子
给一些基础数据:当有
推
主要是第二问
先来看看这篇文章
以下是对这篇文章的解释与总结
首先是本篇文章将拓展过程转化为序列的思想很好,一定要记住。这种二叉树生成的题目也考得挺多了,这个思想还是蛮重要的
另外这篇文章里面所说的“形态数”可以指两个一模一样的树但是“生成方式”是不同的,跟第一问的括号那里一样(如果不能理解可以看看式子)
然后是整数期望公式,注意
最后在计算概率的时候,如果理解不了这个式子,可以从定义根本出发。重新设一个函数
此时,我们有
为什么这个式子要这么推?其实一旦题目涉及的是二叉树我们就可以考虑这么推,即分别考虑左右子树。另一应用就是推导不同二叉树的数量为卡特兰数,也是用的这个方法
最后再注意一下这个初始化的问题,一定不要漏掉了某些数组的初始化(看看那个递推式子,j最小为1,那么j-1可以为0,所以一定要把所有的0都初始化了)
如果让自己来想,一定要知道整数期望公式,然后倒着想吧(其实最开始那个小结论没必要证明,我们知道整数期望公式之后推导
update 2024.8.11
重新做了一遍,做出来了,转化成序列的操作在计数交换中也有体现,这道题目其实想一下一颗树怎么生成的,我们一会在左子树操作,一会在右子树操作就不难想出转化成序列的操作了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构