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

数据结构 (18)数的定义与基本术语

前言

       数据结构是计算机科学中的一个核心概念,它描述了数据元素之间的关系以及这些元素在计算机中的存储方式。

一、数的定义

       在计算机科学中,“数”通常指的是树形数据结构,它是一种非线性的数据结构,由节点(或称为元素)和连接这些节点的边组成。树形结构有一个特殊的节点称为根节点,其余节点则可以划分为若干个不相交的子集,每个子集也是一个树形结构,称为根节点的子树。

二、基本术语

  1. 节点(Node)
    • 树形结构的基本单位,它包含数据部分和指向其子节点的指针(或链接)。
    • 在某些情况下,节点也被称为元素、顶点或记录。
  2. 根节点(Root Node)
    • 树形结构的起始节点,没有父节点。
    • 在树中,所有其他节点都是根节点的后代。
  3. 子节点(Child Node)
    • 一个节点的直接后继节点,通过边与父节点相连。
    • 一个节点可以有多个子节点。
  4. 父节点(Parent Node)
    • 一个节点的直接前驱节点,通过边与子节点相连。
    • 除根节点外,每个节点都有一个父节点。
  5. 兄弟节点(Sibling Nodes)
    • 具有相同父节点的节点。
  6. 叶子节点(Leaf Node)
    • 没有子节点的节点。
    • 在树中,叶子节点位于最底层。
  7. 树的深度(Depth of Tree)
    • 树中节点的最大层次数(从根节点开始计算)。
    • 树的深度也称为树的高度。
  8. 树的度(Degree of Tree)
    • 树中节点的最大子节点数。
    • 需要注意的是,树的度与节点的度是两个不同的概念。节点的度是指该节点的子节点数。
  9. 森林(Forest)
    • 零个或多个不相交的树组成的集合。
    • 森林可以看作是没有根节点的特殊树形结构。
  10. 有序树(Ordered Tree)
    • 树中节点的子节点是有序的,即每个节点的子节点按一定顺序排列。
    • 在有序树中,子节点的位置是重要的。
  11. 无序树(Unordered Tree)
    • 树中节点的子节点是无序的,即每个节点的子节点没有特定的排列顺序。
    • 在无序树中,子节点的位置是不重要的。

三、树的种类

     根据树的结构特点,可以将树分为多种类型:

  1. 二叉树(Binary Tree)
    • 每个节点最多有两个子节点,分别称为左子节点和右子节点。
    • 二叉树是树形结构中最常见和最重要的一种。
  2. 平衡二叉树(Balanced Binary Tree)
    • 一种特殊的二叉树,其中任何节点的两个子树的高度差不超过1。
    • 平衡二叉树通常用于实现高效的搜索和排序操作。
  3. B树(B-Tree)
    • 一种自平衡的树,能够保持数据有序,允许搜索、顺序访问、插入和删除等操作在对数时间内完成。
    • B树广泛用于数据库和文件系统的索引结构中。
  4. 红黑树(Red-Black Tree)
    • 一种自平衡的二叉搜索树,其中每个节点都存储一个额外的位来表示节点的颜色(红色或黑色)。
    • 红黑树通过颜色的约束来保持树的平衡性,从而确保搜索、插入和删除操作的高效性。
  5. 堆(Heap)
    • 一种特殊的完全二叉树,其中每个节点的值都大于或等于其子节点的值(最大堆)或小于或等于其子节点的值(最小堆)。
    • 堆通常用于实现优先队列和堆排序等操作。
  6. Trie树(Trie Tree)
    • 一种用于存储字符串集合的树形数据结构,其中每个节点表示字符串的一个字符。
    • Trie树通常用于实现高效的字符串搜索和前缀匹配操作。

四、树的操作

     在树形数据结构中,常见的操作包括:

  1. 搜索(Search)
    • 在树中查找具有特定值的节点。
    • 搜索操作的时间复杂度取决于树的结构和搜索算法。
  2. 插入(Insert)
    • 在树中添加一个新的节点。
    • 插入操作需要保持树的平衡性和有序性(如果适用)。
  3. 删除(Delete)
    • 从树中移除一个节点。
    • 删除操作需要保持树的平衡性和有序性(如果适用),并处理可能的子树合并或重新平衡。
  4. 遍历(Traversal)
    • 按照一定顺序访问树中的每个节点。
    • 常见的遍历方法包括前序遍历、中序遍历和后序遍历(对于二叉树)以及层次遍历(按层次从上到下、从左到右访问节点)。

总结

       综上所述,数据结构中的“数”(树形结构)是一种重要的非线性数据结构,具有广泛的应用场景和丰富的操作。通过掌握树的基本术语和种类以及常见的操作方法,可以更好地理解和应用树形数据结构来解决实际问题。

 结语   

没有无义务的权利

也没有无权利的义务

!!!

相关文章:

数据结构 (18)数的定义与基本术语

前言 数据结构是计算机科学中的一个核心概念,它描述了数据元素之间的关系以及这些元素在计算机中的存储方式。 一、数的定义 在计算机科学中,“数”通常指的是树形数据结构,它是一种非线性的数据结构,由节点(或称为元素…...

Flink的双流join理解

如何保证Flink双流Join准确性和及时性、除了窗口join还存在哪些实现方式、究竟如何回答才能完全打动面试官呢。。你将在文中找到答案。 1 引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作。如下所示的订单查询SQL,通过将订单表的id和订单详情表ord…...

《使用Python进行数据挖掘:理论、应用与案例研究》

嘿,今天我要给你们介绍一本使用Python进行数据挖掘的好书。这本书是由吴迪博士撰写的,他是雷曼学院商学院的助理教授,也是数据科学的实战派。 在这个时代,数据多得让人眼花缭乱,要从中找出有用的信息,那可不…...

Go语言技巧:快速统一字符串中的换行符,解决跨平台问题

统一字符串中的 Windows \r\n 换行符 — Go语言实现 在编程中,尤其是处理跨平台的文本数据时,换行符的处理是一个常见的问题。Windows 系统使用 \r\n 作为换行符,而 Unix-like 系统(如 Linux 和 macOS)使用 \n。在 Go…...

算法训练营day20(二叉树06:最大二叉树,合并二叉树,搜索二叉树,验证搜索二叉树)

第六章 二叉树 part06 今日内容 ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树 详细布置 654.最大二叉树 又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视…...

Leetcode(区间合并习题思路总结,持续更新。。。)

讲解题目:合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间, 并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入&a…...

『python爬虫』使用docling 将pdf或html网页转为MD (保姆级图文)

目录 预览效果安装下载模型测试代码总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 预览效果 支持转化pdf的表格 安装 Docling 本身是专注于文档转换的工具,通常用于将文件(如 PDF&…...

elasticsearch现有集群扩展节点

原文地址:elasticsearch现有集群扩展节点 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 给现有的 elasticsearch 集群扩展节点比较容易,已有的集群不需要做任何修改,也不用对服务做任何处理,只需…...

力扣162:寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O(…...

Kafka-Connect

一、概述 Kafka Connect是一个在Apache Kafka和其他系统之间可扩展且可靠地流式传输数据的工具。细心的你会发现,我们编写的producer、consumer都有很多重复的代码,KafkaConnect就是将这些通用的api进行了封装。让我们可以只关心业务部分(数…...

递归、搜索与回溯算法 - 3 ( floodfill 记忆化搜素 9000 字详解 )

一:floodfill 算法 1.1 图像渲染 题目链接:图像渲染 class Solution {// 首先先定义四个方向的向量int[] dx {0, 0, 1, -1};int[] dy {1, -1, 0, 0};// 接着用 m 记录行数,n 记录列数,prev 记录 (sr, sc) 位置的…...

YOLOv9改进,YOLOv9引入CAS-ViT(卷积加自注意力视觉变压器)中AdditiveBlock模块,二次创新RepNCSPELAN4结构

摘要 CAS-ViT 是一种为高效移动应用设计的视觉Transformer。模型通过结合卷积操作与加性自注意机制,在保持高性能的同时显著减少计算开销,适合资源受限的设备如手机。其核心组件 AdditiveBlock 通过多维度信息交互和简化的加性相似函数,实现了高效的上下文信息整合,避免了…...

HDLCPPP原理与配置

前言: 广域网中经常会使用串行链路来提供远距离的数据传输,高级数据链路控制HDLC( High-Level Data Link Control )和点对点协议PPP( Point to Point Protocol)是两种典型的串口封装协议。 HDLC协议: 原理…...

react + vite 中的环境变量怎么获取

一、Vite 环境变量基础 创建一个.env文件,Vite 定义的环境变量需要以VITE_开头。 VITE_API_URL "http://localhost:3000/api" 生产模式创建.env.production。 VITE_API_URL "https://production-api-url.com/api" 二、在 React 组件中获…...

知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析

项目地址:https://github.com/Syencil/mobile-yolov5-pruning-distillation 项目时间:2022年 mobile-yolov5-pruning-distillation是一个以yolov5改进为主的开源项目,主要包含3中改进方向:更改backbone、模型剪枝、知识蒸馏。这里…...

Oracle 19c RAC单节点停机维护硬件

背景 RAC 环境下一台主机硬件光纤卡不定时重启,造成链路会间断几秒,期间数据库会话响应时间随之变长,该光纤卡在硬件厂商的建议下,决定停机更换备件,为保证生产影响最小,决定停掉该节点,另外节…...

Linux系统 进程

Linux系统 进程 进程私有地址空间用户模式和内核模式上下文切换 进程控制系统调用错误处理进程控制函数获取进程 ID创建和终止进程回收子进程让进程休眠加载并运行程序 进程 异常是允许操作系统内核提供进程(process)概念的基本构造块,进程是…...

机载视频流回传+编解码方案

无线网络,低带宽场景。不能直接转发ROS raw image(10MB/s),而要压缩(编码)后再传输。可以用rtsp的udp传输或者直接传输话题,压缩方法有theora(ROS image_transport默认支持&#xff…...

Ubuntu 20.04 Server版连接Wifi

前言 有时候没有网线口插网线或者摆放电脑位置不够时,需要用Wifi联网。以下记录Wifi联网过程。 环境:Ubuntu 20.04 Server版,无UI界面 以下操作均为root用户,如果是普通用户,请切换到root用户,或者在需要权…...

【VRChat 改模】开发环境搭建:VCC、VRChat SDK、Unity 等环境配置

一、配置 Unity 相关 1.下载 UnityHub 下载地址:https://unity.com/download 安装打开后如图所示: 2.下载 VRChat 官方推荐版本的 Unity 跳转界面(VRChat 官方推荐页面):https://creators.vrchat.com/sdk/upgrade/…...

人工智能的微积分基础

目录 ​编辑 引言 微积分的基本概念 1. 导数 2. 积分 3. 微分方程 微积分在人工智能中的应用 1. 机器学习中的优化 2. 反向传播算法 3. 概率与统计 4. 控制理论 5. 自然语言处理中的梯度 6. 计算机视觉中的积分 7. 优化算法中的微积分 8. 微分几何在深度学习中的…...

Android 基础类(01)- Thread类 - readyToRun和threadLoop

一、前言: 在阅读AOSP代码过程中,我们经常会看到Thread子类重写两个方法:readyToRun和threadLoop,不清楚的同学,可能在这儿连调用逻辑都搞不清楚了,因为找不到谁调用了它。我这儿先不去深究Thread内部逻辑…...

C++设计模式之构造器

动机 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 如何…...

红日靶场-5

环境搭建 这个靶场相对于前几个靶场来说较为简单,只有两台靶机,其中一台主机是win7,作为我们的DMZ区域的入口机,另外一台是windows2008,作为我们的域控主机,所以我们只需要给我们的win7配置两张网卡&#…...

做异端中的异端 -- Emacs裸奔之路3: 上古神键Hyper

谈一下快捷捷冲突的问题。 Emacs几乎穷尽所有组合键 我用下面命令&#xff0c;在Fundamental模式下&#xff0c;枚举所有绑定。 (defun keymap-lookup-test-fn(); printable keys(setq printable-chars (number-sequence 33 126))(setq i 0)(while (< i (length printable…...

Java多线程介绍及使用指南

“多线程”&#xff1a;并发 要介绍线程&#xff0c;首先要区分开程序、进程和线程这三者的区别。 程序&#xff1a;具有一定功能的代码的集合&#xff0c;但是是静态的&#xff0c;没有启动运行 进程&#xff1a;启动运行的程序【资源的分配单位】 线程&#xff1a;进程中的…...

HarmonyOS 5.0应用开发——列表(List)

【高心星出品】 文章目录 列表&#xff08;List&#xff09;列表介绍列表布局设置主轴方向设置交叉轴方向 列表填充分组列表填充 滚动条位置设置滚动位置滚到监听 列表项侧滑 列表&#xff08;List&#xff09; 列表介绍 列表作为一种容器&#xff0c;会自动按其滚动方向排列…...

自动化电气行业的优势和劣势是什么

优势 市场需求广泛&#xff1a; 自动化电气技术广泛应用于电力系统、制造业、交通、农业等多个领域&#xff0c;随着智能化、数字化趋势的加强&#xff0c;其市场需求持续增长。在智能制造、智能电网等领域&#xff0c;自动化电气技术更是发挥着关键作用&#xff0c;推动了行业…...

第 42 章 - Go语言 设计模式

在Go语言中&#xff0c;设计模式是一种被广泛接受的解决常见问题的最佳实践。这些模式可以分为三类&#xff1a;创建型模式、结构型模式和行为型模式。下面我将结合案例以及源代码对这三种类型的设计模式进行详细讲解。 创建型模式 创建型模式主要关注对象的创建过程&#xf…...

【机器学习】---大语言模型

引言&#xff1a;开启大语言模型的奇幻旅程 近年来&#xff0c;人工智能&#xff08;AI&#xff09;领域正在经历一场前所未有的技术革命&#xff0c;而其中最耀眼的明星莫过于大语言模型&#xff08;Large Language Models, LLMs&#xff09;。这些模型&#xff0c;犹如现代科…...

wordpress微信付款插件/文员短期电脑培训

detail订单详情表字段名 数据类型 默认值 允许非空 自动递增 备注id int(11) NO 是 idorderid int(11) NO 订单id号goodsid int(11) NO 商品id号name varchar(32) NO 商品名称prince double(6,2) NO 单价num int(11) NO 数量orders订单表字段名 数据类型 默认值 允许非空 自动递…...

网站模板购买/跨境电商平台

往期好文推荐 0基础不用怕&#xff0c;从0到1轻松教你入门Python python系统学习流线图&#xff0c;教你一步一步学会python 回首以前&#xff0c;让我们知道且更加了解Python这门编程语言是在2017年&#xff0c;很多人都说是人工智能将要爆发导致Python热度上升&#xff0c…...

网站建设服务网络服务/营销策划公司的经营范围

8月27日&#xff0c;参加了一场《易经》公益培训。主讲者一阵神侃&#xff0c;让大家晕头转向、点头如鸡吃碎米。 看来人们都是低智商的。也不管对方究竟有没有那份儿能耐&#xff0c;主讲者就凭借着《易经》以及给你算命这两面大旗&#xff0c;愣是使得人人折腰&#xff0c;任…...

做游戏难吗比做网站/seo实战培训教程

为了保证用户名的安全&#xff0c;将用户名和该机器的网卡物理地址进行绑定&#xff0c;将其保存至session中&#xff0c;登陆的时候检查该用户的session是否是与本机器网卡的物理地址相匹配。package com.sdtrip.MacDemo;import java.io.BufferedReader;import java.io.InputS…...

城市建设和房屋管理部门网站/百度推广关键词技巧定价

函数不正确说明这个盘的文件系统结构损坏了。在平时如果数据不重要&#xff0c;那么可以直接格式化就能用了。但是有的时候里面的数据很重要&#xff0c;那么就必须先恢复出数据再格式化。具体恢复方法可以看正文了解&#xff08;不格式化的恢复方法&#xff09;工具/软件&…...

郑州公司网站制作/网页设计主题参考

目录Pycharm安装Python3.5安装Pip安装PyQt5安装Pycharm中编译工具设置及pyqt5包的导入指定Qt Designer指定PyUIC5指定PyRcc5PyInstaller安装查看是否配置OK简单写一个程序预热下untitled.pytest.py直接运行test.py&#xff0c;即可Pycharm安装 安装教程 Python3.5安装 1. 下…...