数据结构
文章平均质量分 89
数学小牛马
数学专业本科在读,有奇奇怪怪的coding算法/或者其他想法的可以留言,我会积极为大家带来更多好的原创博文~
展开
-
算法导论Prim算法原理及其实现
Prim算法中文被称为普利姆算法,作为一种最小生成树的常见算法,与上节所介绍的KruskalKruskalKruskal算法存在的区别为:KruskalKruskalKruskal算法:将边权从小到大排序后选择作为两个树的连接边的边加入集合作为最小生成树边集;PrimPrimPrim算法:一棵最小生成树中的所有连接不同树木的临边选择边权最小的边加入集合作为最小生成树边集合;上述两个方法前者更倾向于以边位主连接不同森林,后者则更倾向于以一颗树开始找不同森林的边,如此操作的终止条件都为:图中没有原创 2022-04-12 10:44:19 · 2467 阅读 · 0 评论 -
算法导论:从推排序到优先队列
堆排序一般来说堆排序针对的是二叉堆,这是一种数组结构,且表达为完全二叉树的形式:完全二叉树:除最底层都是满的,且最下层节点从左到右依次排开。这样的好处是能够通过简单的代数计算获得父节点、左孩子、右孩子节点在数组结构中的编号:如此可以很简便的用代码表达为:int Parent(int i){ return i >> 1;}int Left(int i){ return i << 1;}int Right(int i){ return原创 2022-04-11 11:36:56 · 1140 阅读 · 0 评论 -
算法导论21章路径压缩的按秩合并并查集原理实现
不相交集合的数据结构定义:将集合AAA分成一些非空子集,每个子集称为一个类,且AAA中每个元素仅属于一个类。则称这些类的全体为集合AAA的一个分类,也称AAA的一个分划。从近世代数描述分类的定义中进行实例化,可以看到不相交集合的影子,其中集合AAA维护的关系为集合森林的强连通分量子集,每个节点仅属于一个连通分量的分类中。针对上述不相交集合,初始化为均是单个节点的森林,所以实现其他连通分集合的操作有三种:Make-set(x):初始化新的集合,该集合只包含x;Union(x,y):将两个连通集原创 2022-04-06 23:30:02 · 714 阅读 · 0 评论 -
c++模板元实现红黑树Ⅱ
wechat传送:源代码传送门:github绘制红黑树函数修正在基类中添加了针对红黑树的颜色显示flag布尔参数,且采用队列出队时刻节点输出相应颜色描述,确保数据不重复增加dot文件数据量,同理针对NIL指针特殊对待使其颜色描述输出一次。TreeOut(TreeNode<T> *x, string name, bool flag)...cout << "digraph Tree{" << endl;queue<TreeNode<T> *&g原创 2022-03-26 19:53:38 · 1613 阅读 · 0 评论 -
开源的图可视化工具——Graphviz
graphvizgraphvizgraphviz(Graph Visualization Software)是一个由AT&TAT\&TAT&T实验室启动的开源工具包,用于绘制DOTDOTDOT语言脚本描述的图形。实现可视化效果(官网摘取):下载安装官网:http://www.graphviz.org/对应各个系统版本下载,win用户安装过程中选择自动加入path即可,其他系统用户详见官网下载页说明。使用vscode对应插件Graphviz Preview。主要方法.原创 2022-03-25 18:15:04 · 1854 阅读 · 0 评论 -
c++模板元实现红黑树Ⅰ
文章目录基本性质cpp模板元实现继承BSTBSTBST添加属性旋转插入[情况1][情况2$or$3]基本性质红黑树是一棵二叉搜索树,所以基本性质继续保留:对树中的任意节点,左孩子关键字均小于其节点关键字,右孩子均大于等于其关键字。(等于的情况跟随实际定义效果)除此之外又附加了其他性质使其更加稳定,树中每个节点除基本二叉搜索树包含的key,left,right,p之外,还包含color属性。每个节点颜色有红黑两种;根节点为黑色;每个叶子节点都为黑色;若当前节点为红色,那么其两个子节点为.原创 2022-03-24 20:49:52 · 2167 阅读 · 0 评论 -
c++模板元实现二叉搜索树
文章目录二叉搜索树定义节点性质以及创建BST对象插入节点前中后序遍历查找操作最小值最大值后继前驱删除节点欢迎关注公众号二叉搜索树二叉搜索树(Binary Search Trees,BST)是一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势,所以应用十分广泛。涉及本文的全部代码与实例已全部上传至Github。定义节点每一个节点就是一个对象,其中主要包含键值、左右孩子指针和父亲指针,更泛泛地说还可以包含其他数据对象。所以首先定义节点结构:template <t原创 2022-03-21 02:13:14 · 1538 阅读 · 0 评论