树、森林与二叉树的相互转换

这篇具有很好参考价值的文章主要介绍了树、森林与二叉树的相互转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


树转换为二叉树

 二叉树和树都可以用二叉链表作为存储结构,因此二叉链表可以导出树与二叉树的一个对应关系,即给定一棵树,可以找到唯一的一棵二叉树与之对应。其中树的二叉链表存储详情可参照树的存储结构及详细完整代码。

树转换成二叉树的规则:
<1>每个结点的左指针指向它的第一个孩子结点;
<2>每个结点的右指针指向它在树中的相邻兄弟结点。
可表示为“左孩子右兄弟”
注意:由于根结点没有兄弟,故由树转换而得的二叉树没有右子树。

关于树转换为二叉树的实例及过程如下所示:
首先给出要转换为二叉树的树:
树、森林与二叉树的相互转换

<1> 在所有兄弟间画线,所谓兄弟即拥有相同父结点的所有结点。如红线所示。
树、森林与二叉树的相互转换

<2> 去掉每个结点除了第一个孩子结点外的其他线,即只保留第一个孩子结点。如虚线所示。
树、森林与二叉树的相互转换

<3> 最后旋转45°。去掉虚线,黑实线为左孩子,红色实线为右孩子,调整为二叉树的形状。
树、森林与二叉树的相互转换

故该树对应的二叉树为:
树、森林与二叉树的相互转换



森林转换为二叉树

森林转换为二叉树的规则与树类似:
<1> 将森林中的每棵树转换为二叉树;
<2> 将第一棵树的根作为转换后的二叉树的根,将第一棵树的左子树作为转换后二叉树根的左子树
<3> 将第二棵树作为转换后二叉树的右子树
<4> 将第三棵树作为转换后二叉树根的右子树的右子树
以此类推,就可将森林转换为二叉树。

其过程不难理解,由树转换为的二叉树没有右子树,而森林转换为二叉树就是将每棵树转换成的二叉树依次作为右子树加在当前的二叉树上,直至形成一棵完整的二叉树。

关于森林转换为二叉树的实例及过程如下所示:
首先给出要转换成二叉树的森林:
树、森林与二叉树的相互转换

<1> 将森林中的每棵树转换为二叉树。具体操作参照上一部分:树转换为二叉树。
树、森林与二叉树的相互转换
树、森林与二叉树的相互转换

<2> 将每棵树的根相连。
树、森林与二叉树的相互转换

<3> 以第一棵树的根为轴心顺时针旋转45°。
树、森林与二叉树的相互转换


二叉树转换为森林

二叉树转换为森林的规则:
<1> 若二叉树非空,则二叉树的根及其左子树作为第一棵树的二叉树形式
<2> 二叉树根的右子树视作除第一棵树外的森林转换后的二叉树
重复上面的操作,直到产生一个没有右子树的二叉树为止。
然后将每个二叉树转换为其对应的树,就得到了所要求的森林。

将二叉树转换为森林的实例及过程如下所示:
首先给出需要转换的二叉树:
树、森林与二叉树的相互转换

<1> 分离出森林中每棵树的二叉树形式。我们知道树向二叉树转换时,都会形成一个没有右子树的二叉树,而森林则是将每棵树的对应的二叉树安插在右子树上,故分离时只需要沿当前二叉树的根结点出发,依次摘下其右子树即可。
树、森林与二叉树的相互转换

即分出了下图所示的三棵二叉树:
树、森林与二叉树的相互转换

<2> 按照将树转为二叉树时的左孩子右兄弟原则,将每棵二叉树转换为对应的树,具体操作为:对于一个二叉树,其左孩子结点为原树的第一个孩子结点,右孩子结点则是原树该结点的兄弟结点,应将其调整至同一父结点下。最终便能得到所要求的原森林。
树、森林与二叉树的相互转换文章来源地址https://www.toymoban.com/news/detail-489425.html

到了这里,关于树、森林与二叉树的相互转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【数据结构】树与二叉树(一):树(森林)的基本概念:父亲、儿子、兄弟、后裔、祖先、度、叶子结点、分支结点、结点的层数、路径、路径长度、结点的深度、树的深度

    【数据结构】树与二叉树(一):树(森林)的基本概念:父亲、儿子、兄弟、后裔、祖先、度、叶子结点、分支结点、结点的层数、路径、路径长度、结点的深度、树的深度

    树 一棵树是结点的有限集合T: 若T非空,则: 有一个特别标出的结点,称作该树的 根 ,记为root(T); 其余结点分成若干个不相交的非空集合T1, T2, …, Tm (m0),其中T1, T2, …, Tm又都是树,称作root(T)的 子树 。 T 空时为空树,记作root(T)=NULL。 有序树、无序树   如果子树T1, T

    2024年02月05日
    浏览(9)
  • 数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

    数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

    目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历  后序遍历  树是一种 非线性数据结构 ,它由节点和边组成。树的每个节点可以有零个或多个子节点,其中一个节点被指定为

    2024年02月04日
    浏览(11)
  • 树,森林的遍历,以及其与二叉树遍历之间的关系

    树,森林的遍历,以及其与二叉树遍历之间的关系

    树和森林的的遍历 树的遍历 先根遍历 以下列树为演示   首先将树转化成二叉树(孩子兄弟表示法:就是每个节点的左边连着它的左孩子,右边连自己右边的第一个兄弟) 然后把转化为的二叉树进行先序遍历,中序遍历 进行先序遍历的序列为: A BEFCDGIH 进行中序遍历的序列为

    2024年02月14日
    浏览(4)
  • 树与二叉树的存储与遍历

    树与二叉树的存储与遍历

    如前面的顺序表,链表,栈和队列都是线性的数据结构,树是非线性的结构。树可以有n个结点,n=0,当n=0是就表示树为空 n0,代表树不为空,不为空的树,它只有一个根结点,然后其余的结点又是构成互不相交的树,然后这些树本身又是一棵树,这些树且为根节点的子树。 任何

    2023年04月16日
    浏览(24)
  • 【初阶数据结构】树结构与二叉树的基础概念

    【初阶数据结构】树结构与二叉树的基础概念

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,今天带来数据结构里的重点内容也是在笔试,面试中的常见考点——树与二叉树,其中二叉树又分为很多种,我们先来讲讲基础的内容带大家一步步入门 在介绍二叉树之前,我们得先知道什

    2024年02月08日
    浏览(17)
  • 数据结构--》解锁数据结构中树与二叉树的奥秘(一)

    数据结构--》解锁数据结构中树与二叉树的奥秘(一)

            数据结构中的树与二叉树,是在建立非线性数据结构方面极为重要的两个概念。它们不仅能够模拟出生活中各种实际问题的复杂关系,还常被用于实现搜索、排序、查找等算法,甚至成为一些大型软件和系统中的基础设施。         无论你是初学者还是进阶者

    2024年02月08日
    浏览(16)
  • 数据结构--》解锁数据结构中树与二叉树的奥秘(二)

    数据结构--》解锁数据结构中树与二叉树的奥秘(二)

            数据结构中的树与二叉树,是在建立非线性数据结构方面极为重要的两个概念。它们不仅能够模拟出生活中各种实际问题的复杂关系,还常被用于实现搜索、排序、查找等算法,甚至成为一些大型软件和系统中的基础设施。         无论你是初学者还是进阶者,

    2024年02月08日
    浏览(16)
  • [数据结构] 树、森林及二叉树的应用

    [数据结构] 树、森林及二叉树的应用

    双亲表示法 双亲表示法的存储结构 【注】 区别树的顺序存储结构与二叉树的顺序存储结构。在树的顺序存储结构中,数组下标代表节点的编号,下标中所存的内容指示了节点之间的关系。而在二叉树的顺序存储结构中, 数组下标既表达了节点的编号,又指示了二叉树中节点

    2024年03月09日
    浏览(14)
  • 二叉树与树、森林之间的转换

    二叉树与树、森林之间的转换

    树可以称为特殊的森林 , 其中二叉树是树中一些节点度数最大为2 ,并且分左右孩子的树 ● 二叉树很重要         • 结构简单         • 存储效率高         • 运算算法相对简单         • 任何森林、树都可以转换成二叉树 ● 讨论         • 二叉树 == 度为2 的树

    2024年02月10日
    浏览(7)
  • 二叉树与树和森林的转换

    二叉树与树和森林的转换

    树转换成二叉树:兄弟相连留长子(长子变为根结点的左子树,其余孩子变为长子的右子树)  二叉树变为树:左孩右右连双亲(左孩子的右孩子,右孩子的右孩子...一直到某个右孩子没有右孩子),去点原来右孩线   森林转换为二叉树:树变二叉根相连(将每棵树转换为二

    2024年02月16日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包