RodneyX

博客园 首页 新随笔 联系 订阅 管理

08 2025 档案

摘要:BST,即二叉搜索树,该数据结构规定任意若一个结点存在左子树,那么该结点键必须要大于左子树上所有键;若有右子树,那么该结点键必须要小于右子树上所有键 简单的BST是树形查找里的入门级数据结构,不涉及平衡性调节,只需要简单插入删除,即可,其中删除稍复杂,但是也不难,只需要把三种情况分清即可。简单的BS 阅读全文
posted @ 2025-08-19 08:32 RodneyX 阅读(37) 评论(0) 推荐(0)

摘要:这个没什么好说的,规则很清晰,代码注释里说明白了,就看你记不记得住这几条规则了。另外作者没学过编译原理,所以只能写这种简陋的东西。不过还是希望能给初学者带来帮助。 #include <stdio.h> #include <stdlib.h> // We assume that s[] is an l 阅读全文
posted @ 2025-08-18 19:50 RodneyX 阅读(17) 评论(0) 推荐(0)

摘要:这个就不谈原理了,很简单的,按课本上写的哈夫曼树构造的算法描述直接写就是了。这里采用常规操作,用小顶堆来加快构造速度,见https://www.cnblogs.com/RodneyTang/p/19013567 代码如下 /*****file:HuffmanTree.h*****/ #ifndef 阅读全文
posted @ 2025-08-12 16:35 RodneyX 阅读(13) 评论(0) 推荐(0)

摘要:弗洛伊德算法是用于求解无负权回路的图的任意一对顶点间最短路径的算法,该算法采用的基本思想是动态规划(转移方程就是cost[i][j] = cost[i][k] + cost[k][j] < cost[i][j] ? cost[i][k] + cost[k][j] : cost[i][j]) 算法步骤 阅读全文
posted @ 2025-08-09 16:41 RodneyX 阅读(30) 评论(0) 推荐(0)

摘要:拓扑排序的结果序列反应了有向图中前顶点的前驱后继关系。所以,手算拓扑排序很简单,每次检查入度为0的顶点,删除从此顶点出发的边,将该顶点加入拓扑排序序列即可。 Kahn算法其实就是模拟这个过程,不过其核心的优化在于将采用BSF的方式来进行,同时维护一个入度数组,每次加入一个顶点就更新入度数组,并且若入 阅读全文
posted @ 2025-08-04 10:06 RodneyX 阅读(121) 评论(0) 推荐(0)

摘要:克鲁斯卡尔算法是一种常见的用于构造最小生成树的算法,其基本思想是选择n-1(n为顶点数)条权值最小的,且不构成环的边。由于需要选择n-1一条最小权值的边,故可以以这些边为元素依据边权值作堆排序来进行选择。另外,判断构成环与否的方式是利用并查集,检查一条边的两个顶点,若两个顶点都属于某个集合那么选择这 阅读全文
posted @ 2025-08-02 14:27 RodneyX 阅读(44) 评论(0) 推荐(0)