数据结构
浪阳
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
拓扑排序
① AOV网:活动在顶点的网(Activity On Vertex network),表示工程间关系的有向图,顶点代表活动,有向边表示活动间的优先关系,要求AOV不能出现回路。检测是否有回路可使用拓扑排序,若最终有点没有被输出,则表明存在回路。② 拓扑排序步骤:(1)选入度为0的点输出;(2)删除该点及出度的边;循环(1)(2)至所有点全部输出示例如下:输出为 6 1 4原创 2016-02-21 12:05:51 · 321 阅读 · 0 评论 -
最小生成树-普里姆方法(Prim)
生成树:保留一部分的边,使图连通但无回路。普里姆方法(Prim)步骤:(1) 找最小边,及两个顶点为最初的树(2) 与树相接的边中取权值最小的一条边(3) 将边及相应顶点并入树循环(2) (3)可得到最小生成树。示例如下:C代码如下:void Prim(MGraph g,int v, int &sum){ //lowcost记录原创 2016-02-21 12:38:44 · 592 阅读 · 0 评论 -
堆排序
堆是一种经过排序的完全二叉树。大根堆:双亲结点的值大于等于其孩子结点的值,根结点(堆顶)为最大;小根堆则相反。下面以大根堆为例进行说明。堆排序步骤:(1) 建堆:从最后一个非终端结点开始,依次退到前一个结点直至堆顶。每趟以其为根结点,比较其和左右孩子的大小,若不是最大的,则将最大的孩子与根结点交换,并以被交换的孩子结点的位置作为根结点向下递归。(2) 堆顶换出并调整:将堆顶和当原创 2016-02-22 14:08:12 · 446 阅读 · 0 评论 -
二叉树的还原
通过先序和中序,或者中序和后序的结果,可以还原一颗二叉树。中序为必要的,先序和后序有一个即可。步骤为:(1)确定根结点:先序第一个,或后序最后一个为根结点;(2)确定左右子树:在中序的根节点左边的为左子树序列,右边的为右子树序列;(3)确定左右子树中的孩子结点:其孩子为先序中先出现的,或后序中后出现的;循环(2)(3)即可完成。例:先序为:1,2,4,5原创 2016-02-24 15:17:37 · 826 阅读 · 1 评论 -
最小生成树-克鲁斯卡尔方法(Kruskal)-C语言实现
克鲁斯卡尔方法(Kruskal):不断将最小的但不会构成回路的边并入树。示例如下:判断是否构成回路要用到并查集,并查集可快速查找要并入的边与当前的树是否为同一集合(是否在同一棵树中),若为同一集合(在同一棵树中)则会构成回路。并查集的实现方式为:并查集v[a]用来存放a的双亲结点,当a ==v[a]时为根节点,可通过语句"while(a != v[a]) a原创 2016-02-21 12:56:12 · 2581 阅读 · 2 评论
分享