数据结构入门 — 树的概念与结构

news2024/11/26 14:56:55

本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:数据结构专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

数据结构入门 — 树的概念与结构

本文关键字:数据结构、树、概念、结构


文章目录

  • 数据结构入门 — 树的概念与结构
    • 一、树的概念
    • 二、树的结构
    • 三、树的表示
    • 四、树在实际中的运用


一、树的概念

在这里插入图片描述

树是一种非线性数据结构,由若干个节点和它们之间的联系组成。 树具有如下特点:

  1. 树的第一个节点称为根节点,根节点下可以有若干个子节点,每个子节点下也可以有若干个子节点,以此类推。

  2. 节点之间的联系称为边,根节点没有父节点,其他节点的父节点是其直接上级,子节点是其直接下级。

  3. 每个节点可以有零个或多个子节点,但每个节点只有一个父节点。

  4. 树中节点的个数称为节点数或大小,从根节点到任意节点的路径上的边数称为深度或层数。

  5. 树可以为空树,即不包含任何节点。

树常用于表示层次结构,例如计算机科学中的文件系统、解析树、表达式树等。在算法中,树是许多高效的数据结构和算法的基础,例如搜索树、堆、红黑树、B树、哈夫曼树等。

注意:树形结构中,子树之间不能有交集,否则就不是树形结构
在这里插入图片描述


二、树的结构

在这里插入图片描述

概念说明举例
节点的度一个节点含有的子树的个数称为该节点的度如上图:A的为6
叶节点或终端节点度为0的节点称为叶节点如上图:B、C、H、I…等节点为叶节点
非终端节点或分支节点度不为0的节点如上图:D、E、F、G…等节点为分支节点
双亲节点或父节点若一个节点含有子节点,则这个节点称为其子节点的父节点如上图:A是B的父节点
孩子节点或子节点一个节点含有的子树的根节点称为该节点的子节点如上图:B是A的孩子节点
兄弟节点具有相同父节点的节点互称为兄弟节点如上图:B、C是兄弟节点
树的度一棵树中,最大的节点的度称为树的度如上图:树的度为6
节点的层次从根开始定义起,根为第1层,根的子节点为第2层,以此类推如上图:1、2、3、4
树的高度或深度树中节点的最大层次如上图:树的高度为4
堂兄弟节点双亲在同一层的节点互为堂兄弟如上图:H、I互为兄弟节点
节点的祖先从根到该节点所经分支上的所有节点如上图:A是所有节点的祖先
子孙以某节点为根的子树中任一节点都称为该节点的子孙如上图:所有节点都是A的子孙
森林由m(m>0)棵互不相交的树的集合称为森林

三、树的表示

树的常见表示方法有以下几种:

  1. 链式前向星表示法:这种方法是树的常见表示方法之一。使用链式前向星构造一个图,其中每个节点表示树中的一个节点,每条边表示节点之间的父子关系。这个方法可以方便地进行遍历操作。

  2. 双亲表示法:这种方法是使用一个数组来表示树,数组中每个元素表示树中的一个节点,其值为该节点的值,数组下标表示该节点的编号,而该节点在数组中对应的值表示其双亲节点的编号。这个方法可以方便地查找父节点。

  3. 孩子兄弟表示法:这种方法也是使用一个数组来表示树,数组中每个元素表示树中的一个节点,存储每个节点的第一个孩子节点的编号,由此可以找到该节点的所有孩子节点。这个方法可以方便地查找孩子节点。

  4. 邻接表表示法:这种方法是使用一个链表数组来表示树,数组中每个元素表示树中的一个节点,链表中存储该节点的所有孩子节点。这个方法可以方便地遍历孩子节点。

我们这里就简单的了解其中最常用的孩子兄弟表示法。

typedef int DataType;
struct Node
{
	 struct Node* _firstChild1; // 第一个孩子结点
	 struct Node* _pNextBrother; // 指向其下一个兄弟结点
	 DataType _data; // 结点中的数据域
};

在这里插入图片描述


四、树在实际中的运用

树在实际中有很多应用,以下是一些常见的应用场景:

  1. 文件系统:文件系统通常使用树来组织文件和文件夹之间的关系。每个文件夹都可以包含子文件夹和文件,形成一棵树。

  2. 数据库:数据库中的索引通常采用树的数据结构来存储,以便快速查找和排序数据。

  3. 编译器:编译器通常使用抽象语法树(AST)来表示源代码,便于程序分析和优化。

  4. 网络协议:许多网络协议使用树来表示分层结构,例如TCP/IP协议中的网络层、传输层和应用层。

  5. 人工智能:人工智能中的决策树(Decision Tree)用于分类和预测,神经网络(Neural Network)也是一种树形结构。

  6. 算法:许多经典算法(如二叉搜索树、AVL树、红黑树)都使用树的数据结构,以提高算法效率。


在这里插入图片描述

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

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

相关文章

【LeetCode-中等题】 151. 反转字符串中的单词

文章目录 题目方法一:双指针去除空格 题目 方法一:双指针去除空格 核心代码去除首尾以及中间多余空格(在原串上修改) //去除首尾以及中间多余空格(在原串上修改)public StringBuilder trimSpaces(String s) { int len s.length();StringBuilder str …

【结构型】代理模式(Proxy)

目录 代理模式(Proxy)适用场景代理模式实例代码(Java) 代理模式(Proxy) 为其他对象提供一种代理以控制对这个对象的访问。Proxy 模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候。 适用场景 远程代理 (Remote Proxy) 为一个对象在不同…

linux-线程条件变量(cond)

概述 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用 。 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制&a…

Vue2的学习

computed计算属性 概念 基于现有数据&#xff0c;计算出来的新属性&#xff0c;依赖的数据变化&#xff0c;会自动重新计算 语法 声明在computed配置项中&#xff0c;一个计算属性对应一个函数这是一个属性{{计算属性名}}&#xff0c;不是方法注意不要忘记return <body…

无涯教程-JavaScript - ROW函数

描述 ROW函数返回引用的行号。 语法 ROW ([reference]) 争论 Argument描述Required/OptionalReference 您想要其行号的单元格或单元格范围。 如果省略引用,则假定它是出现ROW函数的单元格的引用。 请参阅下面的注释。 Optional Notes 如果引用是一个单元格范围,并且如果将…

【RTOS学习】单片机中的C语言

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 本喵默认各位小伙伴都会C语言&#xff0c;我们平时学习C语言都是在Windows环境下学习的&#xff0…

事半功倍,必看这4个Pandas神器

Pandas是我们日常处理表格数据最常用的包&#xff0c;但是对于数据分析来说&#xff0c;Pandas的DataFrame还不够直观&#xff0c;所以今天我们将介绍4个和Pandas相关的Python包&#xff0c;可以将Pandas的DataFrame转换交互式表格&#xff0c;让我们可以直接在上面进行数据分析…

【电子元件】常用电子元器件的识别之霍尔元件

目录 1. 霍尔元件的结构与特点1.1 霍尔元件的组成结构1.2 霍尔元件的霍尔效应 2. 霍尔元件的图形符号与型号2.1 1.图形符号2.2 2.型号说明 3. 半导体霍尔效应的原理3.1 半导体中的左手定则3.2 P型半导体霍尔效应的原理3.3 N型半导体霍尔效应的原理 4. 霍尔元件的电势计算与工作…

RabbitMQ深入 —— 交换机

前言 在这篇文章中&#xff0c;荔枝围绕交换机梳理RabbitMQ中交换机相关知识&#xff0c;主要包括&#xff1a;扇出交换机、直接交换机、主题交换机&#xff0c;根据不同的交换机引出相应的RabbitMQ模式。同样的本篇文章也是主要围绕如何通过交换机定向群体发送消息这一个问题来…

澳洲硕士申请QA

Q&A 申请一般问题 澳洲申请时间 澳洲分2月跟7月开学&#xff0c;不分rolling。随时申请&#xff0c;截止日期前申请就行&#xff0c;&#xff08;具体时间官网有写&#xff09; 研究生学位时长 它整体的要求一般就是如果说你要申请的这个专业是本专业&#xff0c;那他…

分类预测 | Matlab实现基于MIC-BP-Adaboost最大互信息系数数据特征选择算法结合Adaboost-BP神经网络的数据分类预测

分类预测 | Matlab实现基于MIC-BP-Adaboost最大互信息系数数据特征选择算法结合Adaboost-BP神经网络的数据分类预测 目录 分类预测 | Matlab实现基于MIC-BP-Adaboost最大互信息系数数据特征选择算法结合Adaboost-BP神经网络的数据分类预测效果一览基本介绍研究内容程序设计参考…

Linux内核中断机制

什么是中断&#xff1f; 中断是一种打断程序的正常执行流程的事件&#xff0c;这种事件以电信号的形式出现&#xff0c;可以由硬件设备或者CPU本身生成。 在中断发生后&#xff0c;正常的执行流被立即中止&#xff0c;转而执行中断处理程序(handler)。中断处理完成之后&#…

IT运维:使用数据分析平台监控Windows Eventlog

TIPS&#xff1a;本文鸿鹄版本&#xff1a;2.10.0及以上版本 概述 本文基于《IT运维&#xff1a;利用鸿鹄采集Windows event log数据》&#xff08;以下简称原文&#xff09;文章进行了细化与延伸。主要包括细化了安装步骤&#xff0c;增加了仪表板。 鸿鹄端配置 创建数据集与数…

[Linux入门]---搭建Linux环境

1.Linux环境的搭建方式 使用Linux操作系统的三种途径&#xff1a; 1.直接安装在物理机上&#xff0c;但是由于 Linux 桌面使用起来非常不友好&#xff0c;不推荐。 2.使用虚拟机软件&#xff0c;将 Linux 搭建在虚拟机上&#xff0c;但是由于当前的虚拟机软件(如 VMWare 之类的…

科研生产力:Zotero

目录 Zotero安装配置Zotero常用插件1. Zotero Connector2. Jasminum-茉莉花插件3. Zotero-scihub4. Zotero-pdf-translate5. Zotero-if6. Zotero-style7. Zotero-tag8. ZotFile9. zotero-better-notesZotero GPT 一些学习资源 Zotero安装配置 进入Zotero官网&#xff1a;https:…

前端用户体验设计:创造卓越的用户界面和交互

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 用户体验&#xff08;Us…

Softek Barcode Reader Toolkit 9.3 Crack

现在使用 Pdfium 读取 PDF 文件并改进了对 QRCode、PDF417 和 Code 39 的支持。 2023 年 9 月 11 日 - 16:32新版本 特征 现在使用 Pdfium 读取 PDF 文件。 提高了 GetBarStringPos 返回值的准确性。 如果 PDF417 条形码包含超过数据字节计数的符号长度描述符&#xff0c;则它会…

透视俄乌网络战之二:Conti勒索软件集团(下)

透视俄乌网络战之一&#xff1a;数据擦除软件 透视俄乌网络战之二&#xff1a;Conti勒索软件集团&#xff08;上&#xff09; Conti勒索软件集团&#xff08;下&#xff09; 1. 管理面板源代码2. Pony凭证窃取恶意软件3. TTPs4. Conti Locker v2源代码5. Conti团伙培训材料6. T…

SAP 信息类型:使用 PA30,PA20 创建,更改,复制,删除,概览

目录 创建信息类型 显示信息类型 更改信息类型 复制信息类型 删除信息类型 显示信息类型概述 创建信息类型 步骤 1&#xff09;在 SAP 命令提示符下&#xff0c;输入事务 PA30 步骤 2&#xff09;在下一个 SAP 屏幕中&#xff0c; 输入人员编号点击输入按钮 选择相关的…

SaaS软件能保证数据安全吗?

SaaS软件能保证数据安全吗&#xff1f; 本文将要尝试从各个方面尽可能客观的去阐述这个问题&#xff0c;而不是简单自嗨式的说简道云平台如何保障数据安全。 建议先收藏起来慢慢品&#xff01; 01 SaaS安全到底是什么&#xff1f;——定义解读 本文所用SaaS平台>>>…