二叉树(树)与森林的相互转换

2022-07-1716:24:35数据结构与算法Comments1,034 views字数 511阅读模式

1. 什么是森林文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

森林,顾名思义,就是由众多的树构成的一组数据结构,这些树本身没有什么联系,用系统的语言描述就是:森林:m(>=0)棵互不相交的树的集合 【注意这里森林是可以有0颗树的,同数学上的空集】文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

如果把一棵树当作一个独立的点,那么森林就是一个点的集合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

2. 树转换成二叉树文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

操作过程如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

加线:在兄弟(即同一层之间的孩子)之间加一连线文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

抹线:对每个结点,除了其第一个孩子外,除去其与其余孩子之间的连线文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

旋转:以树的根结点为轴心,将整树顺时针转45°文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

如图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

二叉树(树)与森林的相互转换文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

注意:树转换成二叉树其右子树一定为空文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

3. 二叉树转换成树文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

加线:若p结点是双亲结点的左孩子,则将p的右孩子,右孩子的右孩子,……沿分支找到的所有右孩子,都与p的双亲用线连起来文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

抹线:抹掉原二叉树中双亲与右孩子之间的连线文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

调整:将结点按层次排列,形成树结构文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

如图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

二叉树(树)与森林的相互转换文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

4. 森林转换成二叉树文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

将各棵树分别转换成二叉树文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

将每棵树的根结点用线相连文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

以第一棵树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树型结构文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

如图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

二叉树(树)与森林的相互转换文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

5. 二叉树转换成森林文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

还原:将孤立的二叉树还原成树(二叉树→树)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

如图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

二叉树(树)与森林的相互转换文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/25184.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/25184.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定