![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构系列
文章平均质量分 86
gudongkun1121
这个作者很懒,什么都没留下…
展开
-
12.线段树
参考视频:喵的编程课 https://www.bilibili.com/video/BV1yF411p7Bt1.线段树解决的问题:最大值最小值,加和2.线段树的底层,一般用数组。3.线段树的思想:小区间去更新大区间。一、什么是线段树线段树是一种二叉树,广义上也被归类为二叉搜索树。对于区间的修改,维护和查询时间复杂度优化为log级别。逻辑结构:对于一个区间,平均划分为2个区间,两个再划分为两个,依次类推,一直到区间中只有一个元素。只有一个元素的,的区间是叶子结点。叶子结点原创 2022-02-07 15:19:38 · 337 阅读 · 0 评论 -
10.红黑树
红黑树是实际应用中最常用的平衡二叉查找树,它不严格的具有平衡属性。(平衡属性:任意节点的左右子树的高度相差不大于1),平均的使用性能却很良好。一、什么是红黑树。结点被标记为红色和黑色两种颜色根节点是黑色的,每个叶结点都是不存储数据的黑色空结点。任何相邻的节点都不能同时为红色任意节点到其可到达的叶结点间包含相同数量的黑色结点。这样保证了:没有一条路径比其他路径长出2倍树的高度稳定趋近于log2n\log_{2}{n}log2n,从而各种操作的时间复杂度为log2n\log_{2}{原创 2022-01-26 20:58:34 · 296 阅读 · 0 评论 -
08.树和图的遍历
一、树的基本概念1.树的定义:形式化定义:(二编组,结点组D和边组R)树:T={D,R}。D是包含n个节点的有限集合(n>=0)。当n=0时为空树,否则关系R满足以下条件:有且有一个结点[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pyFy0975-1643095399522)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)],对于关系R来说原创 2022-01-25 16:53:39 · 562 阅读 · 0 评论 -
11.哈夫曼树和哈夫曼编码
哈夫曼树,是二叉树的一种很主要的应用。一、哈夫曼树的定义1.带权路径长度wpl设二叉树具有n个带权值的叶结点,那么从根结点到各个叶结点的路径长度与相应结点权值的乘积的和,叫做带权路径长度wpl(weighted path length)WPL=∑i=1nwiliWPL = \sum_{i=1}^{n}w_il_iWPL=i=1∑nwili1.相同的叶子结点,可以构造出不同的哈夫曼树。2.权值越大的叶结点,越接近根,整个哈夫曼树的wpl就会越小。2.哈夫曼树我们把具有最小带权路径原创 2022-01-24 20:32:44 · 492 阅读 · 0 评论 -
09.二叉排序树和平衡二叉树
一、二叉排序树1.什么是二叉排序树二叉排序树要么是空二叉树 ,要么具有如下特点:二叉排序树中,如果其根结点有左子树,那么左子树上所有结点的值都小于根结点的值;二叉排序树中,如果其根结点有右子树,那么右子树上所有结点的值都大于根结点的值;二叉排序树的左右子树也要求都是二叉排序树;如下图就是一个二叉排序树:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VsGloKcV-1642763317481)(C:\Users\86186\AppData\Roaming\T原创 2022-01-21 19:09:21 · 1781 阅读 · 0 评论 -
07.AOE网和图的关键路径
相关代码地址:https://gitee.com/gudongkun/datestruct一、什么是AOE网AOE(Activity on edge network) :在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称AOE网AOE网中没有入边的顶点称为始点(或源点);没有出边的点称为终点(或汇点)二、AOE网的性质只有再某顶点所代表的事件发生后,从该顶点出发的活动才能开始;只有再进入某顶点的各活动都结束,该顶原创 2022-01-14 18:49:19 · 537 阅读 · 0 评论 -
06.AOV网和图的拓扑排序
一、AOV网:用顶点表示活动,用弧表示活动的依赖关系,称之为顶点表示活动的网(activity on vertex network),简称AOV网应用举例,排课程表:课程编号课程名称先修课程C1C_1C1高等数学无C2C_2C2程序设计基础无C3C_3C3离散数学C1,C2C_1,C_2C1,C2C4C_4C4数据结构C2,C3C_2,C_3C2,C3C5C_5C5算法语言C2C_2C2C6C_6C6编程技原创 2022-01-14 11:08:15 · 734 阅读 · 0 评论 -
05.图的最短路径
一、迪杰斯特拉算法(dijkstra)1.算法特点时间复杂度低不能处理有负边权的图。2.算法思想:起始点为中心向外层层扩展,直到扩展到终点为止;将图所有点的集合 s 分成,已经找到最短路径的点u和未找到最短路径的点v;迭代,取得 U 中距离 v 最短的点 k,将 k 加到 V 集合中,将 k 从 U 集合删除,再将 k 设为中间点 v。重复此过程直到 U 集合为空;3.算法描述:初始化三个数组bestBath : 已经是最优路径的点,初始时都为false;minDist原创 2022-01-13 18:08:39 · 210 阅读 · 0 评论 -
04.图的最小生成树算法-普利姆和克努斯卡尔
一、克努斯卡尔的代码实现1. 图的邻接矩阵实现mgraph.gopackage graphimport "errors"const MaxSize = 20type MGraph struct { Edges [MaxSize][MaxSize]int EdgeNum int Nodes []string Indexs map[string]int}type Edge struct { NodeStart, NodeEnd string Val原创 2022-01-12 15:55:21 · 203 阅读 · 0 评论 -
03.并查集和克努斯卡尔最小生成树算法
一、并查集是什么英文union find,有人说并查集是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。 形象的解释一下,并查集的使用过程:就好像是一个盘子里有很多小水滴,你给他们编好号,如:1、2、3、4、5 ... ... 。合并:就好像是,把这些小水滴,用筷子拨到一起(可以是两个单独的水滴;也可以是,1个原创 2022-01-11 02:06:52 · 266 阅读 · 0 评论 -
01、kmp算法和串
1.KMP是什么?kmp算法是高效的字符串匹配算法; 知识点来源于串,这一章。2.why 串?c语言本身的字符串,太简陋,甚至获取字符串长度都是O(n)的;很多c程序都有对字符串的封装,如redis的 sds,串,就是对这种封装思想的一个介绍,和实现标准。除字符串匹配外,串的其他知识相对比较简单,放到本节最后介绍。3.why KMP?(1)简单匹配方式字符串的简单匹配方式又称幼稚匹配方式,它的思路很直接:一个指针指向原字符串开始称为比较指针,另外一个指针指向匹配串开始称为匹配指针。比较指原创 2022-01-10 19:59:14 · 409 阅读 · 0 评论 -
02、二叉堆、堆排序和优先队列
一、树大于等于一个结点的有限节点,有层次关系的集合,满足下面三个条件:有且只有一个结点,没有父结点,称为根。除了根外,其他结点都都有且只有一个父节点。树中的每个结点都构成以它为根的数。二、二叉树在满足树的定义的前提下,还要满足:每个最多有两个孩子孩子有左右只分,不能颠倒特性:二叉树第i成上的结点数目最多为 2i−12^{i-1}2i−1(i >= 1)深度为k的二叉树至多有2k−12^k - 12k−1个结点(k>=1)包含n个结点的二叉树的高度至少为log2原创 2022-01-10 19:57:44 · 323 阅读 · 0 评论 -
数据结构01-前导概念
知识框架原创 2021-12-14 20:51:46 · 332 阅读 · 0 评论 -
数据结构6-树
数据结构分为 线性结构和非线性结构,树是一种非线性结构。1.树的基本概念1.树的定义:形式化定义:(二编组,结点组D和边组R)树:T={D,R}。D是包含n个节点的有限集合(n>=0)。当n=0时为空树,否则关系R满足以下条件:有且有一个结点,对于关系R来说没有前驱结点,结点称作根结点。 除了根节点外,每个结点有且仅有一个前驱结点。 D中每个结点可以有0个或多个后继结点。递归定义:树是由n(n>=0)个结点组组成的有限集合(记为T)。其中:如果n=0,它.原创 2021-12-04 12:59:16 · 276 阅读 · 0 评论 -
数据结构系列-7 图
一、图的基本概念二、图的存储结构三、图的遍历操作四、最小生成树五、最短路径1.dijkstra 算法(地接特斯拉算法)2.bellman-ford(贝尔曼福田算法)算法特点:时间复杂度高 O(mn) 可以处理负边全情况 不能处理有 负边权回路 的情况(从一点开始走回路,权值为负数)算法描述:六、拓扑排序七、关键路径...原创 2021-11-22 22:54:27 · 727 阅读 · 0 评论 -
数据结构系列-11 二叉搜索数(bst)
1.什么是树?树是一个无环的,无向连同图 有n-1个节点,和n-1条边 有一个根节点,通常需要一个引用 任意点条连接,且只有条路径2.树的相关概念父节点:直接相连的两个节点,上面的叫父节点。 子节点:下面的叫子节点。 根节点:没有父节点,有的实现中,根节点的父节点,指向自己。 叶子节点:没有子节点的节点。 子树:包含再一棵树中的小数 用表示2.什么是二叉树(bt)英文 binnary tree 简称BT ,每个节点最多只有两颗数,3.什么是二叉搜索数二叉搜索数 ,英原创 2021-11-02 11:09:24 · 412 阅读 · 0 评论