当前位置: 首页 > news >正文

树的介绍(C语言版)

前言

        在数据结构中树是一种很重要的数据结构,很多其他的数据结构和算法都是通过树衍生出来的,比如:堆,AVL树,红黑色等本质上都是一棵树,他们只是树的一种特殊结构,还有其他比如linux系统的文件系统就是一棵树。下面让我们一起来学习一下树的结构和特点吧!

1.树的概念

        树是一种非线性的数据结构,它是由n(n >= 0)个有限的节点组成的具有层次结构的集合,把它叫做树,是因为它看起来像一颗倒挂的树,也就是说它根朝上,而叶子朝下的。

        》有一个特殊的节点 称为根节点,根节点没有前驱节点

        》除了根节点外,其余节点被分为M(M>0)个相互不想交的集合T1,T2,T3,...Tm,其中每一个集合Ti(1 <= i <=m)又是一颗结构与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有多个后继。

        》因此树是递归定义的

       

 

 

注意:树的结构中,子树之间不能有交集,否则就不是树形结构

2.与树相关

         

        节点的度:一个节点含有子树的个数,例如上图中A的度为6,D的度为1。

        叶子节点或者终端节点:度为零的节点被称为叶子结点。例如H,I,P,Q。

        非终端节点或者分支节点:度不为零的节点,上图中的:B,C,D,E...

        双亲节点或者父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点。

        孩子节点或者子节点: 一个节点含有的子树的根节点称为该节点的子节点,如上图的B是A的孩子节点。

        兄弟节点:具有相同父亲节点的节点互称为兄弟节点。

        树的度:一棵树中,最大节点的度称为树的度,如上图树的度为6.

        节点的层次:从根节点开始,根为第一层,根的子节点为第二层,以此类推。

        树的高度或者深度:树中节点的最大层次,如上图树的高度为4.

        堂兄弟节点:双亲在同一层的节点互为堂兄弟;如上图:H,I互为堂兄弟

        节点的祖先:从根到该节点所经分支上的所有节点,如上图,A是所有节点的祖先。

        子孙:以某节点为根的子树中的任意一节点都称为该节点的子孙。如上图A节点是所有节点的子孙。

        森林:由M棵互不相交的树的集合称为森林。

3.树的表示方法

        树的结构相对线性表就复杂多了,要存储起来很麻烦,既要保存值域,也要保存节点与节点之间的关系,实际中树的表示方法有很多种,如:双亲表示法,孩子表示法 ,孩子双亲保护法以及孩子兄弟保护法。在这里介绍最简单的孩子兄弟保护法

typedef int DataType;

struct Node

{

        struct Node* _firstChild1;//第一个孩子节点

        struct Node* _pNextBrother;//指向其下一个兄弟节点

        DataType _data;//节点中的数据域

};

          

4.树的应用

         树可以表示文件系统的目录树结构,如图: 

 

相关文章:

树的介绍(C语言版)

前言 在数据结构中树是一种很重要的数据结构&#xff0c;很多其他的数据结构和算法都是通过树衍生出来的&#xff0c;比如&#xff1a;堆&#xff0c;AVL树&#xff0c;红黑色等本质上都是一棵树&#xff0c;他们只是树的一种特殊结构&#xff0c;还有其他比如linux系统的文件系…...

Android studio实现圆形进度条

参考博客 效果图 MainActivity import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.TextView;import java.util.Timer; import java.util.TimerTask;public class MainActivity extends App…...

基于Halcon的喷码识别方法

具体步骤如下: 1. 读入一幅图片(彩色或黑白); 2. 将RGB图像转化为灰度图像; 3. 提取图片中的圆点特征(喷码图片中多是圆点特征),在Halcon中dots_image() 函数非常适合喷码检测; 4. 通过设定阈值,增强明显特征部分; 5. 进行一系列形态学操作(如闭运算等),将…...

【Sword系列】Vulnhub靶机HACKADEMIC: RTB1 writeup

靶机介绍 官方下载地址&#xff1a;https://www.vulnhub.com/entry/hackademic-rtb1,17/ 需要读取靶机的root目录下key.txt 运行环境&#xff1a; 虚拟机网络设置的是NAT模式 靶机&#xff1a;IP地址&#xff1a;192.168.233.131 攻击机&#xff1a;kali linux&#xff0c;IP地…...

idea使用maven时的java.lang.IllegalArgumentException: Malformed \uxxxx encoding问题解决

idea使用maven时的java.lang.IllegalArgumentException: Malformed \uxxxx encoding问题解决 欢迎使用Markdown编辑器1、使用maven clean install -X会提示报错日志2、在Poperties.java文件的这一行打上断点3、maven debug进行调试4、运行到断点位置后&#xff0c;查看报错char…...

linux深入理解多进程间通信

1.进程间通信 1.1 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件…...

使用自定义注解+aop实现公共字段的填充

问题描述&#xff1a;对于每个表都有cratetime,updatetime,createby,updateby字段&#xff0c;每次插入数据或者更改数据的时候&#xff0c;都需要对这几个字段进行设置。 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface AutoFill {//数据库…...

Unity 安卓(Android)端AVProVideo插件播放不了视频,屏幕一闪一闪的

编辑器运行没有问题&#xff0c;但是安卓就有问题&#xff0c;在平板上运行就会报错&#xff1a; vulkan graphics API is notsupported 说不支持Vulkan图形API,解决方法&#xff1a;把Vulkan删除掉...

无涯教程-JavaScript - DMIN函数

描述 DMIN函数返回列表或数据库中符合您指定条件的列中的最小数字。 语法 DMIN (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的行是记录,数据的列是字段。列表的第一行包含…...

GaussDB数据库SQL系列-层次递归查询

目录 一、前言 二、GuassDB数据库层次递归查询概念 三、GaussDB数据库层次递归查询实验示例 1、创建实验表 2、sys_connect_by_path(col, separator) 3、connect_by_root(col) 4、WITH RECURSIVE 四、递归查询的优缺点 1、优点 2、缺点 五、总结 一、前言 层次递归…...

pycharm 下jupyter noteobook显示黑白图片不正常

背景现象&#xff1a; 1、显示一张黑白图片&#xff0c;颜色反过来了。 from IPython.display import display source Image.open(examples/images/forest_pruned.bmp) display(source) 2、原因&#xff1a; 是pycharm会在深色皮肤下默认反转jupyter notebook输出图片的颜…...

Java异常(Error与Exception)与常见异常处理——第八讲

前言 前面我们讲解了Java的基础语法以及面向对象的思想,相信大家已经基本掌握了Java的基本编程。在之前代码中,我们也看到代码写错了编译器会提示报错,或者编译器没有提示,但是运行的时候报错了,比如前面的数组查询下标超过数组的长度。所以在使用计算机语言进行项目开发的…...

【JAVA】多态

作者主页&#xff1a;paper jie_的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和…...

android 12 第三方apk系统签名

需求&#xff1a;客户有两个供应商&#xff0c;我们是其中之一&#xff0c;然后客户想将我们的apk 用 另一家供应商的系统签名&#xff0c;安装到另一家供应商的设备上&#xff0c;另一家供应商提供了系统签名文件 用之前的方法 &#xff08;platform.x509.pem platform.pk8客户…...

【论文阅读】自动驾驶中车道检测系统的物理后门攻击

文章目录 Abstract1.Introduction2.Background2.1.DNN-based Lane Detection2.2.Backdoor Attacks2.3.Threat Model2.4.Image Scaling 3.Methodology3.1.Physical Trigger Design3.2.Poison-Annotation Attack3.3.Clean-Annotation Attack 4.Evaluation4.1.Poison-Annotation A…...

ArrayList、LinkedList、Collections.singletonList、Arrays.asList与ImmutableList.of

文章目录 ListArrayListLinkedListArrayList与LinkedList的区别快速构建list集合Collections.singletonListArrays.asListImmutableList.of Java集合类型有三种&#xff1a;set(集)、list(列表)和map(映射)&#xff0c;而List集合是很常用的一种集合类型&#xff0c; List 我…...

恒运资本:沪指涨逾1%,金融、地产等板块走强,北向资金净买入超60亿元

4日早盘&#xff0c;两市股指盘中强势上扬&#xff0c;沪指、深成指涨超1%&#xff0c;上证50指数涨近2%&#xff1b;两市半日成交约5500亿元&#xff0c;北向资金大举流入&#xff0c;半日净买入超60亿元。 截至午间收盘&#xff0c;沪指涨1.12%报3168.38点&#xff0c;深成指…...

解决WebSocket通信:前端拿不到最后一条数据的问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

【java】[maven]每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致(解决本质问题)

目录 方案一&#xff1a; 我没有使用 方案二&#xff1a;修改maven配置文件 前言&#xff1a;每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致 使用的使用maven3.9.1 jdk17&#xff0c;但是每次创建一个maven模块都是会影响之前的模块。网上都是修改pom.xm…...

GPT-5继续秘密训练中!ChatGPT开学大礼包

&#x1f989; AI新闻 &#x1f680; GPT-5继续秘密训练中&#xff01;DeepMind联合创始人披露了未来模型的规模增长 摘要&#xff1a;DeepMind联合创始人在采访中透露&#xff0c;OpenAI正在秘密训练GPT-5&#xff0c;未来3年&#xff0c;Inflection模型将比现在的GPT-4大10…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...