
数据结构
文章平均质量分 64
听到微笑
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
平衡二叉树(AVL)插入结点后的再平衡思路
理解平衡二叉树在解决平衡二叉树动平衡问题,我们先来明确什么是平衡二叉树:平衡二叉树是二叉搜索树的一种特殊情况,所以在二叉搜索树的基础上加上了如下定义:平衡因子:我们将二叉树中各个结点的左右子树的高度差称为该节点的平衡因子。平衡二叉树:就是在二叉搜索树的基础上,所有结点的平衡因子都小于等于一。则称该树为一颗平衡二叉树。当然平衡二叉树有很多实现方案,例如:AVL、红黑树等。这篇文章...原创 2019-01-11 16:25:15 · 7780 阅读 · 3 评论 -
求一个集合的所有子集
题目描述求一个集合的所有结合,例如集合{A,B,C}的所有子集为:{},{A,B,C},{A,B},{A,C},{B,C},{A},{B},{C}。思路实际上求子集问题是一个经典的DFS,每一次选择某个元素时,都会面临两个选择,一个是不选一个是选:第一步:选择A元素,有两种选择,一个是选A,另一个是不选A第二步,选择B,还是有两种选择第三步:选择C,同样有两种选择...原创 2019-03-20 18:33:15 · 3518 阅读 · 0 评论 -
第七届蓝桥杯:剪邮票
题目题目:剪邮票如【图1.jpg】, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。解题思路我们可以...原创 2019-03-20 18:15:03 · 247 阅读 · 0 评论 -
一篇文章弄懂——基数排序
基数排序(radix sort),相对于常见的比较排序,基数排序是一种分配式排序,即通过将所有数字分配到应在的位置最后再覆盖到原数组完成排序的过程。基数排序思路我们先给出一个待排序数组,和10个桶(桶从0开始编号):我们需要依次将数组中取出来,分别放入10个桶中,入桶的规则:在第一回合中将数组元素按照个位上的值与“桶”号对应,进行入桶操作,例如:12,22,32,42,52这些...原创 2019-03-07 20:08:56 · 474 阅读 · 0 评论 -
一篇文章弄懂——堆排序
概述堆排序是我们常说的十大排序算法中的一种,堆排序也是数据结构中比较重要的一个知识点,我们今天就来好好探究一下堆排序。在说堆排序之前,我们就必须先明白什么是二叉堆,因为堆排序就是在二叉堆的基础上完成的。什么是二叉堆话不多说直接上图:仔细观察上图的特点:1. 二叉堆是一颗完全二叉树。2. 二叉堆中父节点的值总是大于获等于(大顶堆)任何一个孩子节点的值。3. 每一个...原创 2019-03-04 20:30:16 · 356 阅读 · 0 评论 -
全排列的递归实现
概述全排列在很多竞赛题中会经常用到,因为只有枚举出数组中元素的所有可能的组合情况,才能进行题目的下一步操作,那么这篇文章就用递归的思想来实现全排列。首先我们先举一个最简单的全排列的例子,给出数组{1,2,3},那么这个数组的全排列就有6种情况:{1,2,3} {1,3,2} {2,1,3} {2,3,1} {3,1,2} {3,2,1}通过递归可以轻松的实现全排列。全排列...原创 2019-03-04 14:58:35 · 486 阅读 · 0 评论 -
一篇文章弄懂——桶排序
概述上一篇我们学习了堆排序,今天我们来研究一下桶排序,桶排序的思想中也是将排序问题小型化,然后达到排序的目的。在我看来桶排序就是对插入排序的一种优化。桶排序的思路相比与生涩难懂的代码,图解的方式来描述问题是一个非常好的方法,直观的图片永远会比抽象的代码更容易理解。话不多说直接上图:我们给出一个长度为10的待排序数组,以及4个桶:我们分别给4个桶编号:我们规定:0...原创 2019-03-05 17:10:37 · 2234 阅读 · 1 评论 -
四连通图的检测
题目给定一个方阵,定义连通性:上下左右相邻,并且值相同。可以想象一张地图,不同的区域被染成了不同的颜色。现在我们需要判断图中任意两点是否在同一个连通区间中。输入:整数N(N<50),代表矩阵的行列数输入N行,每行N个字符,代表矩阵中的元素输入一个整数M(M<1000)表示询问次数输入M行每行代表一个询问,格式为4个整数x1 y1 x2 y2,代表需要检测的点...原创 2019-02-16 12:25:05 · 3241 阅读 · 2 评论 -
树的层次遍历
二叉树的前序、中序、后序遍历我想大家应该都很熟悉了,那我们今天就来讲一下二叉树的层次遍历。二叉树的前序、中序、后序遍历需要用到栈(递归的过程也就是一个栈),层次遍历需要借助队列这个数据结构。层次遍历的思路我们给出一个二叉树:这棵二叉树的层次遍历次序为:A、B、C、D、F、G以人的思维来看层次遍历貌似比前、中、后序遍历更加简单易懂,但是程序到底如何实现这样的效果呢...原创 2019-02-15 14:44:47 · 45201 阅读 · 7 评论 -
最小生成树Kruskal算法的实现原理
到底什么是最小生成树最小生成树算法应用范围比较广,例如在网络的铺设当中难免会出现环路,需要要生成树算法来取出网络中的环,防止网络风暴的发生。那到底什么是最小生成树呢?我这里就不给严谨的定义了,这种定义网上一搜一大堆,但是往往严谨的定义都不太容易理解。下面我就给出一个更容易理解的定义。在理解“最小生成树”之前,我们需要理解什么是“生成树”。生成树的概念:在一个连通图中取出这个图的全部顶点...原创 2019-01-21 15:40:24 · 2052 阅读 · 1 评论 -
拓扑排序实现思路分析
了解拓扑排序看到这篇文章的博友可能已经对拓扑排序有了一定的了解,但是在这里我们还是需要明确一下什么是拓扑排序。拓扑排序的严谨定义网上一搜一大堆,我就不copy了,我总结几点拓扑排序的特点:1. 拓扑排序是建立在有向无环图(DAG)的基础上的。2.拓扑排序就是将DAG以线性方式进行排序。即对任何顶点U到顶点V的有向边U->V,在最后的排序结果中,顶点U总是在顶点V的前面。这样...原创 2019-01-19 16:47:26 · 1189 阅读 · 1 评论 -
优先队列(PriorityQueue)
概念普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。优先队列的实现:优先队列通常用堆来实现。因为通常所说的二叉堆(堆分为很多种:二叉堆,斐波拉契堆,严格斐波拉契堆等)每次插入或删除元素都...原创 2019-04-26 10:38:27 · 1122 阅读 · 0 评论