森林转二叉树的一个问题
题目描述#
设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端节点,则B中右指针域为空的节点有______个?
答案是n+1
思路#
首先F是一个森林,未规定森林中树的度,就是里面可能有任意叉的树。
要把森林转换成二叉树,首先得把森林中的树一个一个转换成左子右兄弟表示的二叉树,再把它们接到一起。
就这样接。第一层代表森林中的树,第二层代表森林中的树都转换成左子右兄弟表示,第三层代表把这些转换过的树合成一个新二叉树。记住,原森林中有4个非终端节点,1,5,6,8
,这就是题目中的n
。
按照左子右兄弟的定义,转换成二叉树后没有右子节点就代表它在原树中是一排亲兄弟中最右的那一个,或者是根节点。
下图中的黑色节点代表的就是这种节点。
按照定义把这些森林连接成树之后,就只剩下森林中最后一棵树没有右子节点。
有了这些知识,我们就可以考虑n+1
这个答案是怎么来的了。
我们知道最后合成的树中的没有右子节点的节点来自于原树中的亲兄弟的最右兄弟和最后被接的树的根,而原树中有n个非终端节点,也就是非叶子节点,每个非叶子节点都会有若干个孩子,这些孩子里必定有一个排在最右,也就是我们之前说的最右兄弟,那么也就是说,原树中有n个节点,合成的二叉树中就会有n
个节点无右子节点,再加上最后合并的树的树根无右子节点,所以答案就是n+1
作者:Yudoge
出处:https://www.cnblogs.com/lilpig/p/13940585.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
欢迎按协议规定转载,方便的话,发个站内信给我嗷~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)