树、二叉树

树、森林与二叉树的转换总结 前言:   在树这一块的数据结构中最重要的就是二叉树,但是对于我们大部分人来说二叉树的基础掌握还是ok的,但是有时候我们也会忽略了树于森林(本人就是忽略了),今天就在这里总结总结数、森林与二叉树的转换 树转换成二叉树 1.加线:在所有的兄弟结点之间加线 2.去线:对树中的每一个结点,只保留它与第一个结点的连线,删除与其他孩子结点之间的连线 3.层次调整:调整成一颗二叉树(第一个孩 阅读详情

树型结构:

1、树的基本概念
    一种具有一对多关系的数据结构
    有且仅有一个没有前趋的节点,被称为根节点
    注意:树中有树 树型结构具有递归性
    
2、树的表示方法:   倒悬树、嵌套法、凹凸法

3、树的专业术语:
    节点: 组成树的基础元素,同时它也是一棵树
    节点的度:  该节点的子树的数量
    树的度:    树中节的度的最大值
    树的深度:  树的层次数,从1层开始
    叶子结点:  节点的度为0的节点
    双亲和孩子: 节点的子树称为该节点的孩子,该节点就是它孩子的双亲节点
    
4、树的存储
    树既可以顺序、链式存储,也可以混合存储,由于存储的信息不同,有以下
    的表示方法:
        双亲表示法:    顺序
            位置    data    双亲(存储双亲的位置)
            优点:方便找到双亲  缺点:查找孩子不方便

        孩子表示法:
            顺序:浪费空间
                位置    data    arr(存储孩子的数组)
            链式:节约空间
                位置    data    List
            优点:方便找到孩子 缺点:不方便找双亲

        兄弟表示法:
            双亲只存储第一个孩子节点,然后链式地指向所有的兄弟节点
            优点:方便找到所有兄弟节点 缺点:不方便找双亲
    
    总结:普通树不常用,一般转换为二叉树使用

二叉树:

    是一种常用的数据结构,处理比较简单,而且普通树可以很方便地
    转换为二叉树
    定义:节点的度最多为2
特殊的二叉树:
    满二叉树:每层的节点数都是2^(n-1)
    完全二叉树:对树从上到下,从左到右的顺序进行编号(从1开始),
      如果每个编号与满二叉树的编号的节点位置一致,则为完全二叉树
二叉树的性质:(重点)
    性质1:二叉树的第i层上最多有2^(i-1)个节点
    性质2:深度为h的二叉树中至多含有2^h-1个节点
    性质3:若在任意一棵二叉树中,有n0个叶子节点,有n2个度为2的节点,
    		则必有      n0=n2+1
    性质4:具有n个节点的完全二叉树深为log(2)x+1(其中x表示
    			不大于n的最大整数) 
    性质5:若对一棵有n个节点的完全二叉树进行顺序编号(1≤i≤n),
    		那么,对于编号为i(i≥1)的节点: 
    当i=1时,该节点为根,它无双亲节点 
    当i>1时,该节点的双亲节点的编号为i/2 
    若2i≤n,则有编号为2i的左子节点,否则没有左子节点
    若2i+1≤n,则有编号为2i+1的右子节点,否则没有右子节点
二叉树的遍历:
    前序:根、左、右
    中序:左、根、右
    后序:左、右、根
    注意:前中后是由根节点来决定的,并且左右节点的顺序一定不能换
    注意:可以根据前序+中序、后序+中序可以还原一棵树,前序+后序
    	不能还原一棵树(无法判断出根节点的左右子树)
    层序:从上到下、从左到右依次遍历整棵树,必须与队列配合
二叉树的存储:
    顺序:  必须按照完全二叉树的格式存储,空的位置使用特殊符号代替
        数据项:
            存储节点的首地址
            容量

    链式:  由一个个的节点组成,每个节点都是一棵树
        节点的数据项:
            数据
            左子树指针
            右子树指针
有序二叉树:
    左子树的数据小于根,右子树的数据大于等于根
    注意:有序二叉树的中序遍历就是从小到大, 右根左的遍历可以从大到
    小,所以有序二叉树也是一种排序算法,并且对有序二叉树的查找天生就是
    二分查找
线索二叉树:
规律:在有n个节点的链式二叉树中,必定存在n+1个空指针域

链式二叉树中有很多的空指针域,可以让这些右指针指向下一个节点,这样在遍历树
	时可以不用递归而是使用循环,可以提高树的遍历速度

中序线索二叉树节点数据项:
    数据
    左子树指针
    右子树指针
    右子树指针标志  (假表示指向的是右子树,真表示指向下一个节点)

实现过程:
    1、按照中序遍历过程创建线索
    2、按照线索来进行遍历(循环)
选择树:(胜者树、败者树)
是一种完全二叉树,把所有要比较的数据放在最后一层,根节点是左右子树中的一
个,是它们的最大或最小,选择树的功能是快速地找出其中的最大或者最小值   
堆:
是一种完全二叉树,不适合链式存储
大顶堆(大根堆):
    根节点比左右子树大
小顶堆(小根堆):
    根节点比左右子树小

数据项:
    存储节点的内存的首地址
    容量
    数量
运算:
    创建、添加、删除、堆满、堆空、堆顶

堆可以实现优先队列的效果
树、森林与二叉树的转换,树的后续遍历就是二叉树的中序遍历。 树的后续遍历就是二叉树的中序遍历。 1、树转换为二叉树 由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号。 将树转换成二叉树的步骤是: (1)加线。就是在所有兄弟结点之间加一条连线; (2)抹线。就是对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线; (3)旋转。就是以树的根结点为轴心,将整棵树顺时针旋... 阅读详情

相关推荐

Windows 10/11 下用 Docker 一键部署 CVAT 标注工具(附 WSL2 配置指南)

本文详细指导如何在Windows 10/11系统上,通过配置WSL2和Docker Desktop,实现CVAT标注工具的一键部署。内容涵盖从环境准备、Docker安装、CVAT服务启动到性能优化与安全配置的全流程,为计算机视觉开发者提供稳定高效的本地标注平台解决方案。

weixin_28839601的博客 464

树到二叉树的转换就是这么简单

二叉树是树结构的特例,现实生活中见的比较多的是多叉树。由于二叉树的链接浪费率最低,所以我们常常将树转化为二叉树来操作,这样不仅降低链接浪费率,而且还可以使得操作更加简便。 1. 树转化为二叉树 树转化为二叉树的我们通常使用 CHILD-SIBLING(leftmost-child-next-right-sibling)法则,它的执行步骤如下: 将树中节点的所有兄弟节点用横线连接起来 删除所有与子...

A_D_I_D_A_S的博客 2万+

3D Gaussian Splatting的使用

Gaussian splatting 快速生成自己屋子的模型

gootyking的博客 1万+

树转化为二叉树、森林转化为二叉树、二叉树转化为树、二叉树转化为森林

一、将树转换为二叉树: 树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就能将树转换成相应的二叉树: 1.在所有兄弟结点之间加一连线 2.对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。 如下图所示: 二、将一个森林转换为二叉树: 具体方法是:1.将森林中的每棵树变为二叉树; 2.因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结...

Algorithm_Soul 8617

基于PLC1200与CB1241的RS485从站Modbus Rtu通信实战指南

本文提供了一份详细的西门子S7-1200 PLC与CB1241 RS485通讯板实现Modbus RTU从站通信的实战指南。内容涵盖从硬件接线、博途软件组态、关键参数设置到程序调试与测试的全过程,重点解析了Modbus_Slave指令配置与数据块映射,帮助工程师快速掌握工业自动化系统中的数据采集与设备接入技术。

Apple的专栏 796

Python语言在工业控制中的简单应用

在工业控制中,经常需要对采集到的数据进行分析和处理,Python的这些库可以简化这一过程。传统的工业控制系统多依赖于专用的控制硬件和软件,但随着技术的发展,开放性和灵活性成为了新的需求焦点。还有,Python社区活跃,提供了大量的开源代码和模块,这对于工业控制领域来说是一个巨大的资产。Python作为一种高级编程语言,因其简洁的语法、强大的库支持和广泛的社区资源而在工业界获得了快速的发展和广泛的应用。在工业控制领域,Python的应用日益增多,这得益于其跨平台性、脚本语言的灵活性以及与硬件设备交互的能力。

2303_78014702的博客 1722

树 —— 树与二叉树的转换

树转换为二叉树 (1)加线:在兄弟之间加一连线。 (2)抹线:对每个结点,除了其左孩子外,抹掉其与其余孩子之间的连线。 (3)旋转:将树作适当的旋转即可。 二叉树转换为树 (1)逆旋转:把二叉树从左上到右下分为若干层。如A是一层,B-C-D是一层,E-F-G-H-I-J是一层,然后调整为水平方向。 (2)加线:找到每一层结点在其上一层的父结点。如第三层中,E-F的父结点是B,G的父结...

starter_____的博客 1万+

FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)

FortiOS 是 Fortinet 公司开发的操作系统,作为 Fortinet 安全平台的核心,提供全面的网络安全功能。 它将网络和安全功能无缝集成,支持跨本地、云、混合和融合 IT/OT/IoT 基础设施环境的统一管理。 FortiOS 7.6 版本引入了生成式人工智能助手、数据保护、托管服务和单一代理等新功能,进一步增强了其安全性和性能。

缘梦未来的博客 1842

树与二叉树的相互转换

树->二叉树 加线 把相应结点的兄弟结点连线 去线 去掉双亲和非最左边孩子的连线 旋转 二叉树->树 加线-去线 将结点与其左孩子的右孩子及其右子孙连线。然后去掉所有结点与其右孩子的连线。 旋转处理 得到二叉树 #森林->二叉树 先将每棵树转换为二叉树 连接每棵树的根结点 以第一颗树的根作为二叉树的根顺时针旋转 #二叉树->森林 将二叉树的根结点与其右孩子及右子孙的连线全部去掉 对剩下的每一棵孤立的二叉树按照二叉树与树的转换规则转换为树 得

yiranblade的博客 5805

使用Open3D进行RGB-D图像点云处理

在本文中,我们将使用Open3D来处理RGB-D图像,提取点云并进行一些基本的操作。总结起来,本文介绍了如何使用Open3D库处理RGB-D图像并提取点云。我们展示了如何读取RGB-D图像,创建RGB-D图像和点云,并显示点云。除了显示点云,Open3D还提供了许多其他功能,如点云滤波、点云配准、表面重建等。在创建RGB-D图像时,我们需要指定深度图像的缩放因子和截断值,以及是否将RGB图像转换为强度图像。希望本文能够帮助您入门Open3D,并在处理RGB-D图像和点云数据时提供一些指导。

QfcaLinux的博客 445

【24届秋招总结】24届数字IC秋招给学弟学妹们的99条建议(标题党)

针对2023年找实习、秋招、谈薪资等方面的个人经验进行总结,希望对后续同学们找工作有所帮助

qq_42135020的博客 4463

树、二叉树基础

前面介绍的栈、队列都是线性结构(linear structure)。而树是非线性结构(non-linear structure)。因此,树中的元素之间一般不存在类似于线性结构的一对一的关系,更多地表现为多对多的关系。直观地看,它是数据元素(在树中称为节点)按分支关系组织起来的结构。显然,树形结构是比线性结构更复杂的一种数据结构类型。树的定义:树是含有n个节点的有穷集合,其中有一个节点比较特殊称为根节点。在图示树时,用一条边连接两个有逻辑关系的节点,这个关系被称为父子关系。二叉树(Binary Tree)由节

CCPP Blog 5109

飞牛fnNAS存储模式RAID 5数据恢复

中介绍了fnNAS存储空间的几个模式,细心的网友应该能感受到,我是非常推崇RAID 5的。但我认为,一般人出现1块硬盘损坏后,就能够赶紧采取处理措施了,再高的容灾等级也无法满足这个用户的需求了。》就完成了飞牛NAS存储空间的说明,包括了如何创建、怎么选择空间模式、RAID 5 硬盘故障后的更换、系统更换/重装后数据盘的恢复等等。在VMware中新建虚拟机,安装好fnNAS后,再向虚拟机添加“已有硬盘”(这就是所谓崩溃虚拟机的数据盘),此时新的fnNAS出现提示。在“选择要添加的硬盘”中,选择刚添加硬盘。

dgnankai的专栏 3010

树与二叉树的转换、树的遍历

树和二叉树不同,可以有0到n个孩子,所以实现起来很麻烦,但我们可以借助树的孩子兄弟表示法把树转换成二叉树。 在孩子兄弟表示法中,某个结点的第一个孩子结点的指针是二叉树中其左孩子结点指针,右兄弟结点指针是二叉树中右孩子结点指针。 树转换为二叉树过程: (1)树中所有相同双亲结点的兄弟结点之间加一条连线; (2)对树中不是双亲结点的第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,

QS_Sun_24的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

树与二叉树

在这种表示法中,每个节点被表示为一个圆圈,而节点的子节点则被包含在圆圈内的另一个圆圈中。在有序树中,子树的顺序是固定的,例如,左子树的所有节点在某种意义上都“小于”其父节点,而右子树的所有节点都“大于”其父节点。例如,二叉搜索树是一种有序树,它同时也是二叉树,其中左子树上的所有节点的值都小于根节点的值,右子树上的所有节点的值都大于根节点的值。所以这棵树的深度为3。:在F中选取根节点权值最小的两棵二叉树,增加一个根节点,其权值为两棵树根节点权值之和,并将这两棵树作为新根节点的左、右子树,合并成一棵树。

yuange1666的博客 1143

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

树以及二叉树的介绍

📋 个人简介 💖 作者简介:大家好,我是菀枯😜 🎉 支持我:点赞👍+收藏⭐️+留言📝 💬格言:不要在低谷沉沦自己,不要在高峰上放弃努力!☀️ 前言 之前我们学习了顺序表和链表,然后用他们分别实现了两种特殊的线性表栈和队列,今天我们再来看一种新的数据结构:树 树 树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒

m0_60447315的博客 652

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

树、森林与二叉树的转换

树、森林与二叉树的转换 1、树转换为二叉树 由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号。 将树转换成二叉树的步骤是: (1)加线。就是在所有兄弟结点之间加一条连线; (2)抹线。就是对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线; (3)旋转。就是以树的根结点为轴心,将整棵树顺时针旋转一定...

tendollors的博客 1553

树、二叉树、AVL树,B树基础学习

树、二叉树、AVL树,B树基础学习 一、树的基本概念 树是一种数据结构,它是由n(n>1)个有限节点组成的一个具有层次关系的集合。 树的基本概念 1、双亲:若有一个结点有子树,那么该结点就称为子树根的“双亲”。 2、孩子结点:子树的根称为改子树双亲结点的“孩子结点”。 3、兄弟结点:有相同的双亲的结点称为“兄弟结点”。 4、结点的度:结点拥有的子树的数目。 5、叶子结点:度为0的结点。 6...

hanliuxi4265的博客 619

特殊的树:二叉树

树是一种。

2301_80446494的博客 1317

二叉树,B树,B+树

先来看看二叉树 二叉树是大家熟知的一种树,用它来做索引行不行,可以是可以,但有几个问题: 1. 如果索引数据很多,树的层次会很高(只有左右两个子节点),数据量大时查询还是会慢 2. 二叉树每个节点只存储一个记录,一次查询在树上找的时候花费磁盘IO次数较多 所以它并不适合直接拿来做索引存储,算法设计人员在二叉树的基础之上进行了变种,引入了B树的概念 如上图可知BTREE有以下特点: 1...

鲁花花生油 4238

树、哈夫曼树以及二叉树的各种操作

树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件 :有且仅有一个特定的称为根(Root)的节点其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树(Subtree)。树的定义具有递归性,即“树中还有树”。二叉树是每个结点最多有两个子树的树结构。二叉树不允许存在度⼤于2的树。二叉树可以是空集根可以有空的左子树或者右子树;左右子树都是空。只有左子树或者右子树的叫做斜树。

2201_75798871的博客 1019

树、森林、以及二叉树之间的转化

文章目录树、森林、以及二叉树之间的转化树和二叉树的转换1. 树转换为二叉树2. 二叉树还原为树二叉树转化为树、森林二叉树转化树二叉树转化森林 树、森林、以及二叉树之间的转化 树和二叉树的转换 树和二叉树是两种不同的数据结构,树实现起来比较麻烦,但是树可以转换为二叉树进行处理,处理完以后再从二叉树还原为树。 下面说说转换的方法: 1. 树转换为二叉树 (1) 树中所有相同双亲结点的兄弟结点之间加...

qq_45768871的博客 1605

树(二叉树+树+森林)

树 树的基本概念 树是一个n(n>=0)个结点的有序合集 结点:指树中的一个元素; 结点的度:指结点拥有的子树的个数,二叉树的度不大于2; 树的度:指树中的最大结点度数; 叶子:度为0的结点,也称为终端结点; 高度:叶子节点的高度为1,根节点高度最高; 层:根在第一层,以此类推; 节点的深度:从上到下 节点的高度:从下到上1 路径长度:经过的边的个数 森林:好多树,通常树去掉根结点就是森...

xyl 1856
上一篇: 循环链表、双向链表、通用链表
下一篇: 平衡二叉树、红黑树
Everglow200
博客等级 码龄6年 12粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值