数据结构---森林与二叉树的转换
森林和二叉树的转换
树<------->二叉树
由于树和二叉树都可以用二叉链表作存储结构,以二叉链表为媒介可以建立树与二叉树的关系
树用二叉树表示法(孩子兄弟法)来表示存储结构可以解释为二叉树的样子
二叉树的存储就是左指针指向左孩子,右指针指向右孩子它的解释也是为二叉树的样子
实际上两者的存储结构不一样,但都可以解释为二叉树的样子
树变二叉树记忆方法:兄弟相连留长子

二叉树变树记忆方法:左孩右右连双亲,去掉原来右孩线

森林<------>二叉树
森林变二叉树记忆方法:树变二叉根相连
- 将各棵树分别转换成二叉树
- 每棵树的根结点按用线相连
- 以第一棵树根结点为二叉树的根,再以根结点为轴心顺时针旋转,构成二叉树型结构

二叉树变森林记忆方法:去掉全部右孩线,孤立二叉再还原
- 将二叉树中根结点与其右孩子连线,及沿右分支搜索到所有右孩子间连线全部抹掉,使之变成孤立的二叉树
- 将孤立的二叉树全部还原

树和森林的遍历
树的遍历有先根和后根两种,这里区别于二叉树的三种遍历,二叉树的子树有左右之分,所以多一种遍历方式,实际上还可以按层次遍历,即若树不空,自上而下自左向右依次访问树中每个结点
先根:先访问树的根结点,然后依次先根遍历根的每棵子树
后根:先依次后根遍历每棵子树,然后访问根结点
而森林又是由树构成,也是有两种遍历方法
将森林看作三部分:1.森林中第一棵树的根结点2.森林中第一棵树的子树森林3.森林中其他树构成的森林
先序遍历
- 访问森林中第一棵树的根结点
- 先序遍历森林中第一棵树的子树森林
- 先序遍历森林中其他树构成的森林
中序遍历
- 中序遍历森林中第一棵树的根结点的子树森林
- 访问第一棵树的根结点
- 中序遍历除去第一棵树之后剩余的树构成的森林
分类:
数据结构的学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY