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

news2024/10/25 11:36:16

前言

介绍

 🍃数据结构专区:数据结构

参考

该部分知识参考于《数据结构(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 演示 

首先是个二叉树

加线

去线 

调整

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

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


结语

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

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

希望大家都有所收获!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2223244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现场总是发生急停,很可能是PLC和设置间网络中断

如果你的现场总是发生急停,很可能是PLC和设置间网络中断,本文用一个真实案例告诉你问题背后的原因和解决方法! 这是一台生产汽车配件的机器,使用1500F的控制器连接机器人控制器,现场装置总会莫名其妙的发生急停故障。…

Linux运维_搭建smb服务

Samba(SMB)是一个开源软件,允许Linux和Unix系统与Windows系统共享文件和打印机。以下是一些关于Samba和SMB的基本信息和操作步骤: Samba 和 SMB 基本概念 Samba:实现了SMB(Server Message Block&#xff…

程序员中后期,靠什么和其他人拉开差距?

有人说程序员是吃青春饭的,到了35岁会被淘汰。但和身边几十位程序员聊完后,发现实际情况不尽如此! 工作两三年的时候,有些程序员技术优势明显,看起来职业前途很好;工作四五年后,该学的技术都熟…

Vue学习记录之十七 css中样式穿透及新特征介绍

一、scoped原理 在vue页面的css中,有一个设置为scoped,使用以后dom的节点会出现下面的规则。其实我们打完包就是一个html页面,如果不做处理,将会导致css混乱。 给HTML的DOM节点加一个不重复data属性(形如:data-v-123)来表示他的唯一性在每句css选择器的末尾(编译后的生成的…

Java每日面试题(前端Vue拓展)(day20)

目录 Vue是什么?v-if 和 v-show的区别?watch与compute的区别?使用过哪些前端组件?Vue父子组件如何进行交互?Vue的生命周期v-for指令中的key属性有什么用? Vue是什么? Vue是一个渐进式 JavaScrip…

平时实战知识(混合版)map.keyset+stream+maven打包

为这个博主点赞!!!!!!!!!!!!!!!! Java stream 使用样例_哪些类可以使用stream-CSDN博客 IDEA使用maven命令打包_idea 打包maven-CSDN博客

博客搭建之路:hexo搜索引擎收录

文章目录 hexo搜索引擎收录以百度为例 hexo搜索引擎收录 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 写博客的目的肯定不是就只有自己能看到,想让更多的人看到就需要可以让搜索引擎来收录对应的文章。hexo支持生成站点地图sitemap 在hexo下的_config.yml中配置站点…

【D3.js in Action 3 精译_035】4.1 D3 中的坐标轴的创建(下篇):坐标轴与轴标签的具体实现

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

uniapp使用navigator标签不支持flex布局

前言 今天使用uniapp开发时&#xff0c;选用navigator作为flex布局容器&#xff0c;内部元素水平排列&#xff0c;可是发现微信小程序生效&#xff0c;网页端不生效。 微信小程序效果如下&#xff1a; 网页端效果如下&#xff1a; 源代码如下&#xff1a; <template>&l…

园区高能耗企业 水-电-气-热-油采集系统-能源管理系统

能源管理系统能源管理系统源码能源管理平台能源管理系统&#xff08;EMS&#xff09;能源监测能源管控能源系统能源监控能源预测&#xff0c;适用于高能耗企业能源企业 一、介绍 基于SpringCloud的能管管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全…

Vxe UI vue vxe-table 虚拟树表格的使用,流畅的渲染万级数据树结构表格

Vxe UI vue vxe-table 虚拟树表格的使用&#xff0c;流畅的渲染万级数据树结构表格 代码 普通树表格&#xff0c;一般存数据库里都是平级数据&#xff0c;vxe-table 的树渲染这就非常友好了&#xff0c;只有带有父子id关联的数组&#xff0c;就可以自动渲染树表格。 <te…

LeetCode--买卖股票的最佳时机含冷冻期--动态规划

一、题目解析 二、算法原理 我们可以使用dp[i]来表示第i天买卖股票所获得的最大利润。由题可得我们只能持有一支股票&#xff0c;并且在卖出后有冷冻期的限制&#xff0c;因此我们会有三种不同的状态&#xff1a; 我们目前持有一支股票&#xff0c;对应的「累计最大收益」记为…

ONLYOFFICE 文档8.2版本已发布:PDF 协作编辑、改进界面、性能优化等更新

ONLYOFFICE 在线编辑器最新版本已经发布&#xff0c;其中包含30多个新功能和500多个错误修复。阅读本文了解所有更新。 关于 ONLYOFFICE 文档 ONLYOFFICE 是一个开源项目&#xff0c;专注于高级和安全的文档处理。坐拥全球超过 1500 万用户&#xff0c;ONLYOFFICE 是在线办公领…

基于Java+SpringBoot+Vue的水果购物网站的设计与实现

基于JavaSpringBootVue的水果购物网站的设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1…

【C++基础编程】一、初识C++

文章目录 1、编程语言是什么2、进制3、第一个C程序4、注释 一、初识C 1、编程语言是什么 我们编写程序&#xff0c;就是希望与计算机进行交流&#xff0c;让计算机帮助我们实现我们期望的效果。从这点出发&#xff0c;其实和人与人之间的沟通交流是一样的。两个人如果需要正常…

8.MySQL复合查询

目录 复合查询基本查询回顾多表查询 - 笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from中使用子查询 合并查询unionunion all 表的内连和外连内连接外连接左外连接右外连接 复合查询 前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;在实际开发中这远远…

正点原子阿尔法ARM开发板-IMX6ULL(十)——用CRT完成串口验证与DDR3/RGBLCD简述

文章目录 一、串口实验1.1 bsp_uart.c 二、DDR3三、关于RGBLCD 小唠叨&#xff1a; 我发现我学习效率上&#xff0c;看文本信息时候&#xff0c;获取信息是很快的&#xff0c;可能10分钟看个pdf比看30分钟的视频&#xff0c;效率来的更高一点。比如学python&#xff0c;应该多看…

整流器滤波电路

一、整流器滤波电路概述 整流器滤波电路的主要功能是将交流电&#xff08;AC&#xff09;转换为直流电&#xff08;DC&#xff09;&#xff0c;并通过滤波器减少波动以输出稳定的直流电。其工作原理主要分为两个部分&#xff1a;整流部分和滤波部分。 二、整流电路 整流电路是…

AnaTraf | 网络性能监控与TCP响应时延:保障高效运维的核心要素

http://www.anatraf.com 网络作为业务运行的核心&#xff0c;直接影响着业务的连续性和用户体验。为了确保网络的高效性和稳定性&#xff0c;网络性能监控成为IT运维工作中的重要一环。TCP响应时延则是衡量网络性能的重要指标之一。本文将探讨如何通过网络性能监控和优化TCP响…

win10 有线网络变自带的wifi热点

① 首先确定自己的台式机或者笔记本带是否有无线网卡 win10查看无线网开 自带的wifi热点打不开——解决办法 ②win 搜索 “”移动热点“” 1: 打开热点 通过wlan 2: 编辑 热点名称密码即可 完成&#xff0c;有线网络变私人热点 手机 其他设备连接即可使用