数据结构与算法(六)

news2024/11/18 18:28:28

#数据结构

基础知识

数据结构:相互之间存在的一种多种的特定关系的数据元素的集合

逻辑结构:

        线性表:最基本最简单的一种数据结构,一对一逻辑关系。

        集合结构、线性结构、树形结构、图形结构

物理结构:顺序存储、链式存储

逻辑结构是面向问题的,物理结构是面向计算机的。物理结构的基本目标就是将数据结构及其逻辑关系存储到计算机内存中去。

什么是树?

前端中的树:dom tree+css rule = render tree,渲染和重绘

 计算机中的树:

在windows系统中,一切东西都是存储在硬盘上,windows是通过某个硬盘-某个硬盘的分区-分区上特定的系统文件

linux系统中一切都是存在唯一的一个虚拟文件系统,这个虚拟的文件系统时树状的一个结构,一切都以根/目录开始

 

每种数据结构都有自己特定的应用场景。

数组

  •  查询(通过下标查询会很快)
  • 插入和删除数据的时候,效率会很低,需要有大量的位移

链表

  • 插入和删除效率很高,
  • 查找效率很低,需要从头开始依次访问链表中每个数据项,直到找到

哈希表

  • 插入、删除、查询效率都是很高,
  • 空间利用率不高,底层使用的是数组,某些是单元没有被利用的
  • 哈希表中的元素是无序的,不能够按照特定的顺序来便来哈希表中的元素,不能够快这的找出哈希表中的最大值或者最小值

树的概念

:树(Tree)是n( n >= 0 )个结点的有限集,n=0,称为空树

从逻辑上看,树具有如下特点

  1. 任何非空树有且仅有一个结点没有前驱结点,这个结点就是根结点
  2. 除根节点外,其余的结点有且仅有一个直接的前驱结点
  3. 包括根节点在内,每个结点可以有多个后继结点
  4. 树形结构是一种具有递归特性的数据结构(任何一棵子树又满足树的概念)
  5. 树形结构的数据元素之间存在的关系的是:一对多,或者是多对一的关系

树的术语

  1. 结点的度:结点所拥有的子树的个数
  2. 树的度:树中结点度的最大值,树的度为3 
  3. 叶子 (终端结点) : 度为0的结点。K结点、L结点、F结点,都是叶子结点
  4. 分支结点(非终端结点):度不为0的结点。除根结点之外的分支结点统称为:内部结点。根结点我们又称为:开始结点
  5.  子结点: 节点所拥有子树的根节点称为该节点的子节点。 (结点的直接后继,结点的子树的根)
  6. 父结点: 如果节点拥有子节点,则该节点为子节点的父节点。(结点的直接前驱)
  7. 兄弟结点: 与节点拥有相同父节点的节点
  8. 子孙结点:节点向下路径上可达的节点
  9. 祖先结点:从根结点到该结点所经历分支上的所有结点
  10. 路径: 从节点到子孙节点过程中的边和节点所组成的序列(这个结点"自上而下的通过每条路径上的每条边)
  11. 结点的层: 根节点的层: 1,其余结点的层数等于父结点的层数加1,有些教科书: 假设根节点是0
  12. 树的深度(高度) : 树中所有结点层数的最大值
  13. 有序树:如果将树中结点的各子树看成从左至右是有次序的,不能互换的
  14. 无序树:不是有序树

树的存储结构

计算机只能是顺序或者是链式的存储,所以树这样的结构是不能够直接存储的,要将其转换为顺序或者是链式存储。

  • 双亲表示法:双亲表示法采用数组存储普通的树,其核心思想:顺序存储每个结点的同时,给各个结点附加一个记录其父结点位置的变量,存储的父结点的下标。实际操作的时候,就是从上往下,顺序去遍历一棵树,并为相应的域赋值。优点:可以快速的获取任意结点的父结点位置。缺点:如果要获取某个结点的子结点需要遍历。
  • 孩子表示法:孩子表示法是建立多个指针域,指向它的子结点的地址。也就是说,任何一个结点,都掌据它所有子结点的信息。数组+链表的来实现。顺序表=>数组,从树的根结点开始,使用数组依次存储树的各个结点,需要注意的是:孩子表示法会给各个结点配备一个链表,用于存储各结点的孩子结点位于数组中的位置,如果说,结点没有子结点(叶子结点) ,则该结点的链表为空链表
  • 孩子兄弟表示法:把普通的树,转成二叉树:从树的根结点开始,依次用链表存储各个结点的孩子结点和兄弟结点二叉树:其实所有的树的本质都是可以使用二叉树进行模拟出来的,所以二叉树非常重要

二叉树 

如果说树每个结点最多只能有两个子结点,这样树我们称为: 二叉树。

只有两个分叉的树二叉树是n个结点(n>=0) 个结点的有限集合。

如果这个集合是空集叫空二叉树。

特点:
每个结点最多有两棵子树,=>二叉树种不存在度大于2的结点

左子树和右子树是有序的,次序不能任意颠倒的

即使树中某个结点只有一棵子树,也要区分它是左子树还是右子树

满二叉树:在一棵二叉树中,如果所有的分支结点都存在左子树和右子树,并且所有的叶子都在同一层上,这样的又树就是满二叉树
满二又树叶子只能出现在最下一层,出现在其他层,不可能达成平衡,非叶子结点的度一定是2。
 

 

 

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

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

相关文章

MYSQL 自定义变量用法收录

用户自定义变量使用&#xff1a; 优化排名语句 通过变量复制&#xff0c;快速实现类似行号功能 SET rownum :0 ; SELECT school_id , school_name , rownum :rownum1 AS rownum FROM base_school WHERE school_id<0 LIMIT 10 ; -- sql 排名 SET currcnt :0 ,pre…

如何在商场内进行导航?商场路线指引图怎么做?

如何在商场内进行导航&#xff1f;购物中心是多种零售店铺、服务设施集中在一个建筑物内或一个区域内&#xff0c;向消费者提供综合性服务的商业集合体。现在的购物中心面积都比较大&#xff0c;很多朋友的方向感明明不差&#xff0c;却每次都在商场遭遇“滑铁卢”&#xff0c;…

MaxCompute 发布智能物化视图,CU 算力节省 14%

作者&#xff1a;夏俊伟&#xff08;阿里云高级产品专家&#xff09;、郑君正&#xff08;阿里云高级技术专家&#xff09; 什么是物化视图 MaxCompute 物化视图是一种预先计算和存储结果数据的数据对象&#xff0c;也可以称之为“实体化视图”。物化视图可以作为一张虚拟表存…

输电线路测温工作要求

输电线路导线温度监测系统 一、产品描述&#xff1a; 在我国当前发展趋势下&#xff0c;电力的使用越来越庞大&#xff0c;对于供电系统的稳定性可靠性的考验越发严峻&#xff0c;智能化管理的推进必不可少&#xff0c;输电线路导线温度监测系统作为我司在线监测数据类产品&…

开源赋能 普惠未来|XuperCore诚邀您参与2023开放原子全球开源峰会

XuperCore&#xff08;待更名&#xff09;是百度自主研发&#xff0c;拥有完整知识产权的区块链底层技术XuperChain的内核&#xff0c;拥有620多篇区块链核心技术专利&#xff0c;以“高性能”、“开源”为主要设计目标&#xff0c;致力于创建“更快、更通用、更好用”的区块链…

JavaEE(系列13) -- 多线程(CAS)

目录 1. 什么是 CAS 2. CAS伪代码 3. CAS 的应用 3.1 实现原子类 3.2 实现自旋锁 4. CAS的ABA问题(面试常问) 4.1 ABA 问题 4.2 ABA问题解决方案 1. 什么是 CAS CAS: 全称Compare and swap&#xff0c;字面意思:”比较并交换“. 一个 CAS 涉及到以下操作&#xff1a; 我们假…

速卖通、阿里国际、shopee618盛典!提升订单销量的秘密武器—测评补单技术!

随着电子商务的迅速发展&#xff0c;网络购物已成为现代人生活中不可或缺的一部分。而在众多购物平台中&#xff0c;速卖通凭借其丰富多样的商品选择和优惠的价格政策&#xff0c;成为了全球消费者的首选之一。尤其是每年的618盛典&#xff0c;更是吸引了大量消费者的目光。然而…

【CH32】| 01——新建工程 | 下载 | 运行 |调试

系列文章目录 【CH32】| 00——开发环境搭建 【CH32】| 01——新建工程 | 下载 | 运行 |调试 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 1. 新建工程1.1 基于官方IDE [MounRiver Studio]1.1.1 使用官方内置的工程模板新建1.1.2 使用自定义工程模板新建1.1.2.1 新建自…

会声会影2023最新版本剪辑视频的方法和步骤

想要学剪辑&#xff0c;剪辑软件是基础。如果大家是零基础的话&#xff0c;建议大家选择一款入门级的剪辑软件&#xff0c;比如说会声会影。这款软件功能强大、操作简单&#xff0c;而且会声会影中文网站首页有很多剪辑教程供大家学习参考。会声会影在用户的陪伴下走过23余载&a…

计算机图形学 | 实验十二:混合(透明物体处理)

计算机图形学 | 实验十二&#xff1a;混合&#xff08;透明物体处理&#xff09; 计算机图形学 | 实验十二&#xff1a;混合&#xff08;透明物体处理&#xff09;混合&#xff08;Blending&#xff09;开启混合和设置混合模式绘制顺序排序透明物体绘制实验结果 华中科技大学《…

IPO观察丨德尔玛上市,“极致单品”模式的一场胜利

近日&#xff0c;创新电器品牌德尔玛&#xff08;广东德尔玛科技股份有限公司&#xff0c;代码“301332”&#xff09;&#xff0c;正式登陆深圳证券交易所创业板&#xff0c;发行价格为14.81元/股。上市前&#xff0c;德尔玛已完成了5亿元A轮融资及3.3亿元A轮融资&#xff0c;…

Linux Ubuntu配置CPU与GPU版本tensorflow库的方法

本文介绍在Linux操作系统的发行版本Ubuntu中&#xff0c;配置可以用CPU或GPU运行的Python新版本深度学习库tensorflow的方法。 在文章Anaconda配置Python新版本tensorflow库&#xff08;CPU、GPU通用&#xff09;的方法&#xff08;https://blog.csdn.net/zhebushibiaoshifu/ar…

Elasticsearch 7.x 基本操作 (CRUD)

1.概述 Elasticsearch 是一个流行的开源搜索引擎&#xff0c;用于存储、搜索和分析数据。下面是 Elasticsearch 7.x 版本的基本操作&#xff08;CRUD&#xff09;&#xff1a; 1、创建索引&#xff1a; PUT /index_name {"settings": {"number_of_shards"…

最近公司招了一个华为拿30K出来的,真是砂纸擦屁股,给我露了一手....

今年的金三银四已经结束&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0c;他山…

【C++】位图(海量数据处理)

文章目录 抛出问题:引入位图位图解决 位图的概念位图的实现结构构造函数设置位清空位判断这个数是否存在反转位size与count打印函数 位图的应用 抛出问题:引入位图 问题&#xff1a;给40亿个不重复的无符号整数&#xff0c;没排序&#xff0c;给一个无符号整数&#xff0c;如何…

基于 MapReduce 的分布式计算系统

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 本文以 MapReduce 为基础&#xff0c;实现了一套基于浏览器实现的分布式系统。加之如今 Chrome 对各个平台近乎完美的兼容性&#xff0c;实现了一次编写&#xff0c;处处运行的目标。同时得力于个人移动设备的普及&#xff0c…

java云HIS系统源码 医院HIS管理系统源码 Java医院系统源码 SaaS医院his系统源码

技术框架&#xff1a; 1、前端&#xff1a;AngularNginx 2、后台&#xff1a;JavaSpring&#xff0c;SpringBoot&#xff0c;SpringMVC&#xff0c;SpringSecurity&#xff0c;MyBatisPlus&#xff0c;等 3、数据库&#xff1a;MySQL MyCat 4、缓存&#xff1a;RedisJ2Cac…

day6 - 使用图像运算进行图像美化

本期将了解图像的基础运算&#xff0c;包含算数运算和位运算等。我们所使用的图像处理技术其实都是靠一些简单的基础运算来完成的&#xff0c;例如加法运算、位运算等&#xff0c;这些简单运算是我们后续研究更复杂的图像处理的基础。 完成本期内容&#xff0c;你可以&#xf…

HiveSQL基础练习题

HiveSQL基础练习题 1.环境准备1.1建表语句1.2数据准备1.3插入数据 2.查询2.1 查询姓名中带“华”的学生名单2.2 查询姓“王”老师的个数2.3 检索课程编号为“04”且分数小于60的学生学号&#xff0c;结果按分数降序排列2.4 查询语文成绩 < 90分的学生和其对应的成绩&#xf…

day16 Servlet交互作用域ELJSTL

转发和重定向 **作用:**为了让jsp和servlet做到责任分离,用于web组件的跳转 **web组件:**jspservlet 转发的方法 request.getRequestDispatcher("跳转的地址").forward(request,response)**跳转的位置:**在服务端进行跳转 重定向的方法 response.sendRedirect(…