数据结构---森林与二叉树的转换

森林和二叉树的转换

树<------->二叉树

由于树和二叉树都可以用二叉链表作存储结构,以二叉链表为媒介可以建立树与二叉树的关系

树用二叉树表示法(孩子兄弟法)来表示存储结构可以解释为二叉树的样子

二叉树的存储就是左指针指向左孩子,右指针指向右孩子它的解释也是为二叉树的样子

image-20220127211635928

实际上两者的存储结构不一样,但都可以解释为二叉树的样子

树变二叉树记忆方法:兄弟相连留长子

image-20220127212407952

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

image-20220127212518971
森林<------>二叉树

森林变二叉树记忆方法:树变二叉根相连

  • 将各棵树分别转换成二叉树
  • 每棵树的根结点按用线相连
  • 以第一棵树根结点为二叉树的根,再以根结点为轴心顺时针旋转,构成二叉树型结构
image-20220127213112011

二叉树变森林记忆方法:去掉全部右孩线,孤立二叉再还原

  • 将二叉树中根结点与其右孩子连线,及沿右分支搜索到所有右孩子间连线全部抹掉,使之变成孤立的二叉树
  • 将孤立的二叉树全部还原
image-20220127213809643

树和森林的遍历

树的遍历有先根和后根两种,这里区别于二叉树的三种遍历,二叉树的子树有左右之分,所以多一种遍历方式,实际上还可以按层次遍历,即若树不空,自上而下自左向右依次访问树中每个结点

先根:先访问树的根结点,然后依次先根遍历根的每棵子树

后根:先依次后根遍历每棵子树,然后访问根结点

而森林又是由树构成,也是有两种遍历方法

将森林看作三部分:1.森林中第一棵树的根结点2.森林中第一棵树的子树森林3.森林中其他树构成的森林

先序遍历
  • 访问森林中第一棵树的根结点
  • 先序遍历森林中第一棵树的子树森林
  • 先序遍历森林中其他树构成的森林
中序遍历
  • 中序遍历森林中第一棵树的根结点的子树森林
  • 访问第一棵树的根结点
  • 中序遍历除去第一棵树之后剩余的树构成的森林

image-20220127215450424

posted on   眉目作山河  阅读(493)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示