数据结构——树、二叉树和森林间的转换

前言

介绍

 🍃数据结构专区数据结构

参考

该部分知识参考于《数据结构(C语言版 第2版)》129~130页

🌈每一个清晨,都是世界对你说的最温柔的早安:ૢ(≧▽≦)و✨


目录

前言

1、基础知识

2、树转换为二叉树

2.1 方法介绍:

2.2 演示

3、森林转换为二叉树

3.1 方法介绍:

3.2 演示

4、二叉树转换为树或森林

4.1 方法介绍:

4.2 演示 

结语


1、基础知识

  • 树的定义:是 n(n≥0)个结点的有限集合。当 n=0 时,称为空树;任意一棵非空树满足以下条件:  

        ⑴ 有且仅有一个特定的称为根的结点;

        ⑵ 当 n>1 时,除根结点之外的其余结点被分成 m(m>0)个互不相交的有限集合 T1,T2,…,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。


  • 二叉树的定义:二叉树是 n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

  • 森林的定义:森林是 m(m≥0)棵互不相交的树的有限集合。该集合或者为空集(称为空森林),或者由 m 棵互不相交的树组成,其中每棵树本身又是一棵二叉树

2、树转换为二叉树

2.1 方法介绍:

加线——树中所有相邻兄弟结点之间加一条连线;

去线——对树中的每个结点,只保留它与第一个孩子结点之间的连线,删去它与其它孩子结点之间的连线;

层次调整——以根结点为轴心,将树顺时针转动一定的角度,使之层次分明。  

2.2 演示

首先这是一棵树

开始第一步,加线

随后进行第二步,删线

最后调整即可 

3、森林转换为二叉树

3.1 方法介绍:

⑴ 将森林中的每棵树转换成二叉树

⑵ 从第二棵二叉树开始,依次把一棵二叉树的根结点作为一棵二叉树根结点的右孩子,当所有二叉树连起来后,所得到的二叉树就是由森林转换的二叉树。

3.2 演示

这是一片森林

首先将每棵树都转换为二叉树

随后,从第二棵二叉树开始,将后一棵树的根节点,作为前一棵树的根节点的右孩子 

4、二叉树转换为树或森林

4.1 方法介绍:

加线——若某结点 x 是其双亲 y 的左孩子,则把结点 x 的右孩子、右孩子的右孩子、……,都与结 点 y 用线连起来;

去线——删去原二叉树中所有的双亲结点与右孩子结点的连线;

层次调整——整理由⑴、⑵两步所得到的树或森林,使之层次分明。 树的遍历序列与二叉树的遍历序列之间的对应关系 

4.2 演示 

首先是个二叉树

加线

去线 

调整

二叉树转森林,第一步是从根节点开始,若右孩子存在,就把与右孩子节点的连线删除 

剩余就是二叉树转树的步骤了


结语

这里我仅仅介绍了树和森林对于二叉树的转换,并没有介绍树和森林的遍历,对于遍历的文章我推荐这一篇文章

树和森林的遍历(动态演示) 

希望大家都有所收获!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值