树的介绍(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语言版)
前言 在数据结构中树是一种很重要的数据结构,很多其他的数据结构和算法都是通过树衍生出来的,比如:堆,AVL树,红黑色等本质上都是一棵树,他们只是树的一种特殊结构,还有其他比如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
靶机介绍 官方下载地址:https://www.vulnhub.com/entry/hackademic-rtb1,17/ 需要读取靶机的root目录下key.txt 运行环境: 虚拟机网络设置的是NAT模式 靶机:IP地址:192.168.233.131 攻击机:kali linux,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、运行到断点位置后,查看报错char…...
linux深入理解多进程间通信
1.进程间通信 1.1 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件…...
使用自定义注解+aop实现公共字段的填充
问题描述:对于每个表都有cratetime,updatetime,createby,updateby字段,每次插入数据或者更改数据的时候,都需要对这几个字段进行设置。 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface AutoFill {//数据库…...
Unity 安卓(Android)端AVProVideo插件播放不了视频,屏幕一闪一闪的
编辑器运行没有问题,但是安卓就有问题,在平板上运行就会报错: vulkan graphics API is notsupported 说不支持Vulkan图形API,解决方法:把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显示黑白图片不正常
背景现象: 1、显示一张黑白图片,颜色反过来了。 from IPython.display import display source Image.open(examples/images/forest_pruned.bmp) display(source) 2、原因: 是pycharm会在深色皮肤下默认反转jupyter notebook输出图片的颜…...
Java异常(Error与Exception)与常见异常处理——第八讲
前言 前面我们讲解了Java的基础语法以及面向对象的思想,相信大家已经基本掌握了Java的基本编程。在之前代码中,我们也看到代码写错了编译器会提示报错,或者编译器没有提示,但是运行的时候报错了,比如前面的数组查询下标超过数组的长度。所以在使用计算机语言进行项目开发的…...
【JAVA】多态
作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和…...
android 12 第三方apk系统签名
需求:客户有两个供应商,我们是其中之一,然后客户想将我们的apk 用 另一家供应商的系统签名,安装到另一家供应商的设备上,另一家供应商提供了系统签名文件 用之前的方法 (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集合类型有三种:set(集)、list(列表)和map(映射),而List集合是很常用的一种集合类型, List 我…...
恒运资本:沪指涨逾1%,金融、地产等板块走强,北向资金净买入超60亿元
4日早盘,两市股指盘中强势上扬,沪指、深成指涨超1%,上证50指数涨近2%;两市半日成交约5500亿元,北向资金大举流入,半日净买入超60亿元。 截至午间收盘,沪指涨1.12%报3168.38点,深成指…...
解决WebSocket通信:前端拿不到最后一条数据的问题
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
【java】[maven]每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致(解决本质问题)
目录 方案一: 我没有使用 方案二:修改maven配置文件 前言:每次创建一个maven模块时java compiler版本就是1.6与实际版本不一致 使用的使用maven3.9.1 jdk17,但是每次创建一个maven模块都是会影响之前的模块。网上都是修改pom.xm…...
GPT-5继续秘密训练中!ChatGPT开学大礼包
🦉 AI新闻 🚀 GPT-5继续秘密训练中!DeepMind联合创始人披露了未来模型的规模增长 摘要:DeepMind联合创始人在采访中透露,OpenAI正在秘密训练GPT-5,未来3年,Inflection模型将比现在的GPT-4大10…...
嵌入式技术学习路径与核心技能解析
嵌入式技术学习路径与资源整合指南1. 嵌入式技术体系概述嵌入式系统作为现代电子设备的核心,其技术栈涵盖从底层硬件到上层软件的完整知识体系。一个合格的嵌入式工程师需要掌握以下核心领域:1.1 基础编程能力C/C语言编程基础数据结构与算法计算机组成原…...
ShaderGlass在OBS直播中的高级用法:打造视觉震撼的实时画面效果
ShaderGlass在OBS直播中的高级用法:打造视觉震撼的实时画面效果 【免费下载链接】ShaderGlass Overlay for running GPU shaders on top of Windows desktop 项目地址: https://gitcode.com/gh_mirrors/sh/ShaderGlass ShaderGlass是一款能在Windows桌面上运…...
Font-Awesome-SVG-PNG 核心原理:深入解析SVG到PNG的转换机制
Font-Awesome-SVG-PNG 核心原理:深入解析SVG到PNG的转换机制 【免费下载链接】Font-Awesome-SVG-PNG Font Awesome split to individual SVG and PNG files of different sizes along with Node.JS based generator 项目地址: https://gitcode.com/gh_mirrors/fo/…...
直接上干货,咱们用粒子群算法给PID控制器做个暴力调参。传统PID参数调整像盲人摸象,PSO(粒子群优化)相当于派出一群带雷达的无人机直接扫描整片山区找最优解
基于粒子群算法的PID控制优化算法案例 matlab源代码 代码有详细注释,完美运行先看目标——让这个二阶系统达到最顺滑的响应: % 被控对象传递函数 sys tf(1, [1 3 2]); t 0:0.01:10; % 时间序列 粒子群的核心配置得够骚: %% PSO参…...
BongoCat:重新定义桌面体验的互动工具
BongoCat:重新定义桌面体验的互动工具 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 你是否曾觉得日复一日的…...
Tomcat安全防护指南:如何防御CVE-2017-12615和CNVD-2020-10487漏洞攻击
Tomcat安全防护实战:从漏洞原理到企业级防御体系构建 最近在帮某金融客户做安全审计时,发现他们的Tomcat服务器竟然还开着AJP端口,而且管理后台用的还是默认密码。这让我想起去年处理过的一次安全事件——攻击者仅用3小时就通过CVE-2017-1261…...
别再自己憋大纲了!这4款AI写作工具能自动生成逻辑严密的论文框架
别再死磕大纲了!这 4 款 AI 工具能一键生成逻辑严密、贴合学术规范的论文框架,帮你快速搞定开题与写作第一步。一、PaperRed(国内论文首选,学术专属)核心定位:全流程学术写作,大纲 初稿一站式大…...
大文件传输不再难:探索高效文件分享工具的实战指南
大文件传输不再难:探索高效文件分享工具的实战指南 【免费下载链接】aliyunpan 阿里云盘命令行客户端,支持JavaScript插件,支持同步备份功能。 项目地址: https://gitcode.com/GitHub_Trending/ali/aliyunpan 你是否经历过这样的尴尬时…...
5大技术维度精通ABC系统:数字电路设计的逻辑综合与形式验证实践指南
5大技术维度精通ABC系统:数字电路设计的逻辑综合与形式验证实践指南 【免费下载链接】abc ABC: System for Sequential Logic Synthesis and Formal Verification 项目地址: https://gitcode.com/gh_mirrors/ab/abc ABC系统(Sequential Logic Syn…...
OFA-VE模型性能详解:OFA-Large在SNLI-VE测试集SOTA指标复现与解读
OFA-VE模型性能详解:OFA-Large在SNLI-VE测试集SOTA指标复现与解读 1. 引言:理解视觉蕴含的核心价值 视觉蕴含(Visual Entailment)是多模态人工智能领域的一个重要研究方向,它要解决的核心问题是:机器如何…...
