数据结构-树的转换
1、树转二叉树
1.加线:在所有兄弟结点之间加一条连线
2.去线:对树中每个结点,只保留他与第一个长子结点的连线,删除他与其他孩子结点之间的连线
3.层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使结构层次分明。
注意:第一个孩子是二叉树结点的左孩子,兄弟转换过来的孩子是结点的右孩子
转换后,根节点只有左子树,最左侧链表不改变
2、森林转二叉树
1.将每个树转换为二叉树
2.第一棵二叉树不动,从第二棵二叉树开始,依次吧后一棵二叉树的根节点作为前一棵二叉树的根节点的右子树,用线连接起来。当所有的二叉树连接起来,就得到了由森林转换而来的二叉树
3、二叉树转树
1.若某结点的左孩子存在,则将该左孩子的右孩子结点,以及该左孩子的右孩子的右孩子结点,以及...,就是左孩子的n个右孩子结点都作为此结点的孩子。将该结点与这些右孩子结点用线连接
2.去线:删除原二叉树中所有结点与其右孩子结点的连线
4、二叉树转森林
我们从一:知道树转二叉树只有左子树,森林转二叉树会同时存在左子树和右子树。
所以判断一棵树能够转换为一棵树还是一个森林,就看这个二叉树的根节点有没有右孩子
1.从根节点开始,若是右孩子存在,将右链拆开,所有的右孩子连线都删除。得到分离的二叉树。
2.再将每棵分离后的二叉树转换为树即可。
树,森林的前根(序)遍历和二叉树的前序遍历结果相同,树,森林的后根(序)遍历和二叉树的中序遍历结果相同
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧