数据结构复习

稀疏矩阵

给定三元组集合解题思路:根据给定的(按照行排序,分别是行,列,元素值),写出稀疏矩阵,然后按照列排序,将三元组写出来。(图表形式)
在这里插入图片描述

二叉树

二叉搜索树,二叉平衡树,B树对应的构造(插入)与删除要熟练。注意均为从叶子结点处插入。

二叉树存储结构:

带孩子的双亲表示法;孩子兄弟表示法;

带孩子的双亲表示法:先按照层次遍历,编号从0开始,孩子依照向右。
孩子兄弟表示法:左子树代表其孩子节点,右子树代表其兄弟节点。

① 二叉排序树(又名二叉搜索树)

给定一组序列,建立二叉排序树,并删除所要求结点。
例如:

②二叉平衡树

二叉平衡树插入:LR带着插入的结点自己根结点一起重排。RL同理。LL则是按照根下一个结点为轴旋转,选择合适位置排序。

给定一组序列,建立二叉排序树,并删除所要求结点。
例如:

③B树

B树操作:

敲黑板!!操作前,根据所给B树阶数,确定最多含有元素个数。例如n阶b树,最多含n-1个,最少含(n-1)/2个,(此时向上取整,即n=4时,最少2个)

①插入操作
根据所给列表逐个插入元素。超过,向上调整,并断链。

②删除操作:
终端结点(非叶子结点):
相当于删除左子数最右边的元素,或者右子数最左面的元素。将根结点用上面两个中任意一个替换掉,然后将替换掉对应的元素删除,删除操作即为下面所说的叶子结点删除操作。(替换+删除叶子结点操作)

非终端结点(叶子结点):
观察自身删除后是否满足元素范围,即((n-1)/2,n-1),若满足,直接删除吧。
不满足范围,观察兄弟结点是否可以借,可以的话,将兄弟结点中距离所删除元素最近的元素与所删除元素父结点中距离该删除元素距离最近的元素互换,并将兄弟结点断链。
不可以借的话,直接把父亲结点中距离所要删除元素最近的元素放在原来不够借的兄弟结点里。

自然而然,够借与否都会把所要删除结点删除的。

给定一组序列,建立二叉排序树,并删除所要求结点。

例如:

④哈夫曼树

①二叉搜索树,二叉平衡树,B树对应的构造(插入)与删除要熟练。注意均为从叶子结点处插入。
哈夫曼编码:构造哈夫曼树,先把已给数据排序,选取最小的两个构造二叉树,并将两者之和放在之前的排序的恰当位置,直至构造结束。遵从左小右大的原则,且最上面的数字为题设所有数字之和。注意检查。

最小生成树

求最小生成树。共有 n-1个步骤

①普里姆算法(prime)

给定一个顶点出发(其实所有顶点也都给出),寻找最短边,关注只能从通过已经相连的顶点的边选取。

②克鲁斯卡尔算法(Kruskal)

所有顶点已经给出,每一次寻找最短的边,注意不要形成回路。(真题答案有的就是晦气,顶点未全给出。与prime易混)

最短路径

①迪杰斯特拉算法(Dijkstra)

结点 第一轮 第二轮 第n轮
V2
V3
路径集合{}

②弗洛伊德算法(Floyd)

弗洛伊德算法,just so so。
①先初始化矩阵,任意两条路径之间距离表示出来。②选取松弛顶点。(从第一个选取,即有几个顶点,就需要变换几次)。③选取好第一个之后,照抄初始化矩阵④选取第二个,按照1-2-3走,可比较1-3两者距离,远最小填入,依次比较所有⑤按照④遍历下去,求出所有松弛结点的矩阵
举例:在这里插入图片描述

AOE网求关键路径

在这里插入图片描述

排序

① 堆排序

堆排序:
①大顶堆用于升序排序
②小顶堆用于降序排序
不管哪一种排序,首先将所给列表,转化成完全二叉树。其次转换成相应的堆排序。
如何转换成堆排序?
从最后一个带有孩子的结点开始,比较,使得该节点元素恒小于等于孩子结点元素(或恒大于等于)。重复操作,直至根结点。注意调整后观察是否进行二次调整。(从下往上,从右往左)。
输出堆:
将堆顶元素与最后一个结点元素互换,互换后删除最后一个结点(即互换前的堆顶元素值),然后调整新的堆。(此时有n-1个结点,每输出一个,结点数-1)。依次进行,直至输出所有结点。
Ps:掌握住方法,利用自己独创方法画图较为简单。

②希尔排序

基本思想:先将整个待排记录序列分割成若干子序列分别进行直接插入排序,将整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
默认增量5,3,1。取序列长度一半,奇偶均可,依次减半,直至1。也可。
插入排序:直接插入排序,2-路插入排序,表插入排序,希尔排序。(271页)

③基数排序

基数排序:选取个位,十位,百位。三次排序。从左到右,从下到上。在这里插入图片描述

④快速排序

基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
两个指针,快慢指针,i,j,起始点j对应第一个数值,i对应空值,(j前面)枢轴可以设置在最后一个结点。j每次进1,当对应数值小于枢轴,i进1且和j对应的数值交换,再继续,直到j到达n-1个对应数值。

在这里插入图片描述

散列表

散列表:哈希表,构造自己解决冲突的方法。
二次探测,先右后左。线性貌似也是先右后左。
链式地址法解决冲突,书本258页有详细内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值