树与二叉树的相互转换以及森林和二叉树的相互转换

关务管理项目专题:SAP 与关衡关务系统的进出口报关业务集成(1)需求和方案整理 一个拥有进出口业务的企业就需要报关,而关务系统就是用来辅助企业日常进出口报关,同时数字化、合规化报关业务的有效工具。本章属于关务管理项目专题系列,以 SAP 与关衡关务系统的进出口报关业务集成为实例,详细讲解报关业务的需求和方案整理。 阅读详情

一、孩子兄弟表示法

在介绍这两种转换前我想先说一下:树的存储结构—孩子兄弟表示法
二叉树 (二叉链表)表示法: 链表中结点的两个链域分别指向该结点的第一个孩子和下一个兄弟。结点结构:

firstchilddatanextsibling

树的二叉链表存储(孩子兄弟表示法)结构体表示:

typedef struct CSNode
{
     ElemType data;
     struct CSNode *firstchild, *nextsibling;    
}CSNode,*CSTree;

在这里插入图片描述


孩子兄弟表示法的优点:易于找结点孩子; 缺点:不易查找结点的双亲,破坏了树的层次
在这里插入图片描述


二、树与二叉树的相互转换(1)

在这里插入图片描述
在这里插入图片描述


1.树T转换成二叉树B(1)

通过孩子兄弟表示法我们可以知道根节点A只有孩子,没有兄弟,所以该二叉树只有左子树和根节点,其实每一个数转化成二叉树后都是没有右子树的。
已知T要求B
第一步:确定在B中A的左结点链接B,因为C、D都是B的兄弟,所以B的右节点是C,C的右节点是D
第二步:同第一步,可以确定以B为“根”的子树,以及以D为“根”的子树。
这个讲法应该很好理解吧

2.二叉树B转换成树T(1)

已知B要求T
第一步:确定根节点A的孩子,因为A的左结点是B,而B有右节点C,C有右节点D,D无右节点,所以可以确定在T中 A的孩子有BCD
第二步:同第一步,可以确定B的孩子以及其孩子的兄弟、D的孩子以及其孩子的兄弟。


三、森林和二叉树的相互转换(1)

在这里插入图片描述
在这里插入图片描述


1.森林F转换成二叉树B(1)

已知F求B
第一步:将森林F中的第一棵树的根节点作为二叉树B的根节点,其子树按照树转化成二叉树的方法转化为B的左节点;
第二步:将其他剩余的树的根节点依次作为二叉树B的根节点的兄弟结点,然后将其依照树转化为二叉树的方法转化为B的右节点。

2.二叉树B转换成森林F(1)

已知B求F
第一步:确定二叉树B的左子树,按照二叉树转化为树的方法将左子树+根节点转化为森林的第一棵树;
第二步:通过二叉树B的根的右节点的右节点的右节点...的右节点确定有多少棵树,在依次将他们转化成一棵棵的树。

四、树与二叉树的相互转换(2)

方法2 就是书本上的方法啦,感觉也不是很好用,看看就好

1.树T转换成二叉树B(2)

步骤1:加线-在兄弟之间加一连线;
步骤2:抹线-对每个结点,除了其左孩子外,去除其与其余孩子之间的关系;
步骤3:旋转-以树的根结点为轴心,将整树顺时针转45°。
在这里插入图片描述


2.二叉树B转换成树T(2)

步骤1:加线-若p结点是双亲结点的左孩子,将p的右孩子,沿分支找到的所有右孩子,与p的双亲连线;
步骤2:抹线-抹掉原二叉树中双亲与右孩子之间的连线;
步骤3:将结点按层次排列,形成树结构。
在这里插入图片描述


五、森林和二叉树的相互转换(2)

1.森林F转换成二叉树B(2)

步骤1:转换-将各棵树分别转换成二叉树;
步骤2:加线-将每棵树的根结点用线相连;
步骤3:旋转-以第一棵树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树。
在这里插入图片描述


2.二叉树B转换成森林F(2)

步骤1:抹线-将二叉树根结点与其右孩子连线、沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成多棵二叉树;
步骤2:还原-将孤立的二叉树还原成树;
在这里插入图片描述


3.森林和二叉树的转换-规则

设森林F={T1,T2,……Tm},二叉树B=(root,LB,RB)
(1) 森林转化成二叉树的规则
1.若F为空(m = 0),B为空;
2.若F不空(m≠0),B的根root(B)是F中第一棵树T1的根root (T1);
左子树LB从T1根结点的子树森林(T11, T12, …, T1m)转换来;
右子树RB是从森林F’={T2, T3, …, Tm} 转换而来。
(2) 二叉树转换为森林的规则
1.若B为空, F为空;
2.若B非空,则F中第一棵树T1的根为二叉树的根root(B);
T1根的子树森林F1由B的左子树LB转换而来;
F 中除 T1 外其余树组成的森林F’={ T2, T3, …, Tn } 由B 的右子树 RB 转换而来。


六、树和森林的遍历

1.树的遍历

先根遍历:若树不空,先访问根结点,再依次先根遍历各棵子树
后根遍历:若树不空,先依次后根遍历各棵子树,再访问根结点
在这里插入图片描述


2.森林的遍历

先序遍历(对森林中每一棵树进行先根遍历)
·访问第一棵树的根。
·先根遍历第一棵树中根结点的子树森林。
·先根遍历除去第一棵树之后剩余的树构成的森林。
中序遍历(对森林中每一棵树进行后根遍历)
·后根遍历第一棵树中根结点的子树森林。
·访问第一棵树的根。
·后根遍历除去第一棵树之后剩余的树构成的森林。
(为什么叫基于后根遍历要叫中序遍历呢?因为第二部访问了第一棵树的根结点,也就是对应的二叉树的根节点,所以是中序。)
在这里插入图片描述

android 蓝牙通讯demo android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。 立即下载

相关推荐

Python+QMT量化交易实战:从零搭建你的第一个极速策略(附完整代码)

本文提供了一份详细的Python+QMT量化交易实战指南,手把手教你从零搭建一个可回测、可实盘的极速策略。内容涵盖环境配置、QMT核心机制解析、双均线策略的完整代码实现、回测优化方法以及实盘部署要点,帮助量化交易新手快速入门并掌握核心开发流程。

b9c0d的博客 1013

【数据结构】图解 树,森林与二叉树的转换

前言 在说树的结构时,我提到了树的孩子兄弟法可以将一棵树用二叉链表进行存储,所以借助二叉链表,树和二叉树可以相互进行转换。从物理结构看,他,他们的二叉链表也是相同的,只是解释不一样而已。因此只要设定一定的规则,用二叉树来表示树,甚至表示森林都是可以的,森林与二叉树也可以相互进行转换 树转换为二叉树 步骤: 加线:在所有兄弟结点之间加一条线。 去线:对树中每个结点,只保留它与第一个孩子结点的连线,删除它与其他孩子结点之间的连线。 层次调整:以树的根结点为轴心,将整棵树顺时针旋转一定的角度,将整棵树一定的角度

xiangjunyes的博客 1万+

嘉立创EDA报错:元件引脚与焊盘未对应报错解决记录

原件引脚与焊盘未对应报错解决方法,一文总结!

2303_77013775的博客 1万+

二叉树转换为森林

前提: 假如一棵二叉树的根节点有右孩子,则这棵二叉树能够转换为森林,否则转换为一棵树。 转换规则: (1)、从根节点开始,若右孩子存在,则把与右孩子结点的连线删除。再查看分离后的二叉树,若其根节点的右孩子存在,则连续删除。直到所有这些根结点与右孩子的连线都删除为止。 (2)、将每棵分离后的二叉树转换为树。 ...

NJU phd 在读。 5万+

<硬件设计> 阻抗设计(二) 使用Si9000计算阻抗

阻抗设计(二) 使用Si9000计算阻抗

杰克拉力船长个人博客 1万+

FIFO的工作原理及其设计

FIFO( First Input First Output)简单说就是指先进先出。FIFO存储器是一个先入先出的双口缓冲器,即第一个进入其内的数据第一个被移出,其中一个口是存储器的输入口,另一个口是存储器的输出口。对于单片FIFO来说,主要有两种结构:触发导向结构和零导向传输结构。触发导向传输结构的FIFO是由寄存器阵列构成的,零导向传输结构的FIFO是由具有读和写地址指针的双口RAM构成。FIFO与普通RAM存储器的是没有外部读写地址线(指针),使用方便,但。

Jackiezhang1993的博客 2万+

二叉树和树,森林的相互转换

树(Tree)是一种非线性的数据结构。树是n(n≥0)个节点的有限集。n=0时,称为空树。树由唯一的根和若干棵互不相交的子树组成。一棵树每一棵子树又是一棵树,也是由唯一的根节点和若干棵不相交的子树组成的。子树树的定义是递归的我们可以发现,树的定义是递归。大可以无限套娃!很容易想到,由树组成森林。若干棵互不相交的树的集合。理解了树,稍加限制条件就是二叉树了。二叉树就是有限制条件的树。限制条件有二:什么是度就不用我讲了吧。我还是讲吧,一句话带过。节点的度:节点拥有的子树个数或者分支的个数。

gost9070的博客 9262

遇到一个诡异的WiFi网络问题:同一个办公室苹果电脑上不了网,其他电脑都可以

先来把问题掰开揉碎地看清楚:在一个普通的办公室WiFi网络中,所有设备——Windows电脑、安卓手机、甚至是那台老旧的Linux服务器——都能正常联网,唯独苹果电脑(可能是MacBook、iMac或者Mac mini)像被下了魔咒一样,连不上网。这种情况不仅让人抓狂,还透着一股神秘感。为什么偏偏是苹果电脑?难道WiFi路由器对苹果有“偏见”?这些症状都指向一个核心问题:苹果电脑与办公室WiFi之间,似乎存在某种“沟通障碍”。但这障碍到底出在哪里呢?是苹果电脑自己的问题,还是网络设置在“针对”它?

网络技术联盟站 841

树、森林与二叉树的转换

树转换为二叉树: 1.在所有兄弟结点之间加一条连线 2每个结点只保留其与第一个孩子的连线,与其他孩子的连线全部去掉 3.顺时针旋转一定角度,使之结构分明 注意:结点的第一个孩子是该结点的左孩子,结点的兄弟结点是该结点的右孩子。 森林转换为二叉树: 森林:若干棵树集合 1.把每棵树都转换为二叉树 2.从第一棵树开始,后一棵的树都是前一棵的树的右孩子 二叉树转换为树: 1.将每个结点的...

weixin_61898526的博客 1496

YOLOv11改进 - C3k2融合 | C3k2融合CBSA 收缩 - 广播自注意力:轻量级设计实现高效特征压缩,优化处理效率 | NeurIPS 2025

本文介绍收缩 - 广播自注意力(CBSA)((Contract-and-Broadcast Self-Attention))机制,并将其集成到YOLOv11中。传统注意力机制存在黑盒难理解、计算复杂度高的问题,CBSA通过算法展开推导出本质上可解释且高效的注意力机制。它先从输入数据中选出少量代表性tokens,接着对代表进行收缩计算,再将结果广播给所有原始数据。该机制计算量线性增长,具有明确数学解释,还能统一多种注意力机制。我们将CBSA代码集成到YOLOv11的C3k2模块中。实验证明,改进后的YOLOv

魔改工程师的博客 852

智慧园区——解读零碳智慧园区全域双碳管理建设方案【附全文阅读】

《零碳智慧园区全域双碳管理建设方案》为园区开发运营企业、政府部门及绿色能源服务商等提供系统性指导。方案基于"背景-理念-路径"框架,首先分析全球双碳趋势及我国园区高碳排放现状,明确零碳园区价值;其次提出"数字+绿色"双动力理念,构建数字底座与绿色能源体系;最后详细规划实施路径,包括碳排查、绿能规划、能效优化、碳交易等全流程管理,结合数字孪生技术实现可视化管控,助力园区实现碳中和目标。

cdfunlove的博客 206

【数据结构】树、二叉树和森林的相互转换

一、树和二叉树的相互转换 ①加线:树中所有相邻兄弟加一条线 ②去线:对于树中的每个结点,只保留与其第一个孩子结点之间的连线,删去与其他孩子结点的连线 ③旋转:以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明,即可得到二叉树 ...

Jacky_Feng的博客 1万+

WCK Operation (WCK 操作)

LPDDR6 SDRAM采用双时钟系统(WCK和CK),其中WCK频率是CK的两倍。为确保数据正确传输,需通过WCK2CK同步操作使两种时钟对齐。LPDDR6支持两种同步模式:Auto-sync off模式和WCK Always on模式,可通过MR22寄存器选择。同步操作由特定命令(Read/Write/MRR等)触发,需在满足特定时序参数(如tWCKENL、tWCKPRE等)后完成。同步前必须完成WCK2CK训练,且不同操作(读取/写入/CAS)有各自的时序要求。该机制确保数据在正确时钟相位下传输,是L

李家小院 649

树、二叉树和森林的表示及相互转换

树、二叉树和森林相关概念树的基本概念二叉树的基本概念存储结构二叉树的存储结构树的存储结构树、二叉树和森林的相互转换树转换为二叉树森林转换为二叉树二叉树转换为森林 相关概念 树的基本概念 树的定义:树是n(n >= 0)个节点的有限集。当n=0是,称为空树。 树的特点: (1)树的根没有前驱,除根外的其他节点有且仅有一个前驱; (2)每个节点都可以有零个或多个后继。 术语: (1)节点的度:树中一个节点的孩子个数。 (2)树的度:树中节点的最大度。 (3)分支节点:度大于0的节点。 (4)叶子结点:

1+1=王的博客 6919

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

本文章主要是介绍树、森林和二叉树的相互转化和遍历。在介绍之前,首先会介绍树的一种存储结构二叉链表法,又叫孩子兄弟表示法。提示:以下是本篇文章正文内容,下面案例可供参考以上就是本文全部的内容了,本文仅仅简单粗略的介绍了树的一种存储结构——二叉链表法(孩子兄弟法)、树与二叉树的相互转换、森林与二叉树的相互转换以及树和森林的遍历方法。

qq_63908084的博客 1325

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

森林、树与二叉树相互转换 1、森林转二叉树 (1)、把每棵树转换为二叉树 (2)、第一棵二叉树不动,从第二棵二叉树开始,一次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来。 转换规则:兄弟相连,长兄为父,孩子靠左。 2、树转二叉树 (1)、加线。在所有的兄弟结点之间加一条线。 (2)、去线。树中的每个结点,...

Dashi_Lu的博客 1313

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

文章目录树转换为二叉树 树转换为二叉树  二叉树和树都可以用二叉链表作为存储结构,因此二叉链表可以导出树与二叉树的一个对应关系,即给定一棵树,可以找到唯一的一棵二叉树与之对应。其中树的二叉链表存储详情可参照树的存储结构及详细完整代码。  树转换成二叉树的规则:  <1>每个结点的左指针指向它的第一个孩子结点;  <2>每个结点的右指针指向它在树中的相邻兄弟结点。  可表示为"左孩子右兄弟"。 ...

薛定谔的猫的博客 2万+

【数据结构】森林、树与二叉树相互转换

文章目录1、森林转二叉树2、树转二叉树3、二叉树转树4、二叉树转换为森林 森林、树与二叉树相互转换 1、森林转二叉树 (1)把每棵树转换为二叉树 (2)第一棵二叉树不动,从第二棵二叉树开始,一次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来。 转换规则:兄弟相连,长兄为父,孩子靠左。 2、树转二叉树 (1)加线。在所有的兄弟结点之间加一条线。 (2)去线。树中的每个结点,只...

tangxz的博客 2944

【数据结构】- 树和二叉树的相互转换 , 森林和二叉树的相互转换

1.树和二叉树之间的转换 原理解释 如上图 : 假设我们使用 孩子兄弟(当前节点的左子树存储孩子 , 右子树存储兄弟) 链表存储 如图可以看到 A 的左子树 存储的是 子节点 B , 右子树是空 , 因为A 是根节点没有兄弟 B 的左子树为空 , 因为 B 没 子节点 , B 的右子树 存储的是 C , C是 B 的右边兄弟节点 C 的左子树存储的是 C的子树 D , 右子树存储的...

兀坐晴窗独饮茶 1640

二叉树、树、森林的相互转换--笔记

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

weixin_61562383的博客 548

树、森林与二叉树之间的相互转换方法

树、二叉树与森林的相互转换 本文只给出树、森林与二叉树之间的转换方法,而详细的证明过程不在本文讨论范围之内。 树 → 二叉树 在所有兄弟结点之间加一连线。 对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。 二叉树 → 树 是树转换为二叉树的逆过程。 加线。若某结点X的左孩子结点存在,则将这个左孩子的右孩子结点、右孩子的右孩子结点、右孩子的右孩子的右孩子结点…,都作为结点X...

刘伟佳的博客 9283

树/二叉树/森林之间的相互转换 与遍历

因为根结点没有兄弟,所以它仅有左孩子,所以从二叉树的左结点入手,找左结点的全部右兄弟,使它们连接到左结点的parent结点(下图虚线所示),然后断开兄弟之间的连线(打叉叉的地方),然后再从第一个兄弟的左结点继续往下找,依次。森林总结点数为m,即二叉树的总结点数也是m, 根p的右子树结点数有n个,我们根据森林转二叉树规则知道根结点的右子树都是由森林中其它树构成的,既然右子树结点n,也就是除了第一棵树外总的结点数n,所以第一棵树就有m-n个结点。如果是无序树,EF的位置就可以对换,还是同一棵无序树。

whiteBearClimb的博客 1952

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

这个是我认为说得比较清晰的了 二叉树、树、森林的相互转换

kellen_f的博客 359

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

树、森林及二叉树的相互转换 一、普通树转换为二叉树 步骤如下: 加线,在所有兄弟结点之间加一条连线。 去线,对树中每个结点,只保留它与第一孩子结点的连线,删除它与其他孩子结点之间的连线。 层次调整,以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明。 二、森林转换为二叉树 步骤如下: 把每棵树转换为二叉树。 第一棵二叉树不动,从第二棵二叉树开始,依次把...

hongcaixia的博客 615

数据结构(五)——树、二叉树、森林相互转换

概念 这个应该是数据结构比较简单的知识点了,在做试卷的时候会因为粗心导致出错,因此对它继续总结下 首先先请出咱们今天的主角,树,二叉树,森林 定义这个东西太重要了,这个就是分类的边界,接下来进入今天的主题,相互转换 之间转换 一、树转换为二叉树 1.将所有兄弟结点连接起来 2.保留第一个兄弟结点与父节点的连接,断开其他兄弟结点与父结点的连接,然后以根结点为轴心按顺时针旋转45度 ...

shang_0122的博客 815
上一篇: 如何用优快云的Markdown画树图
下一篇: 计算机二级C语言知识点
nufe_wwt
博客等级 码龄7年 40粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值