摘要:
平衡二叉树(Balanced Binary Tree 或 Height Balanced Tree)又称AVL树 (a)和(b)都是排序二叉树,但是查找(b)的93节点就需要查找6次,查找(a)的93节点就需要查找3次,所以(b)的效率不高。 平衡二叉树(Balanced Binary Tree 或 阅读全文
摘要:
c/c++ 二叉排序树 概念: 左树的所有节点的值(包括子节点)必须小于中心节点,右树所有节点的值(包括子节点)必须大于中心节点。 不允许有值相同的节点。 二叉排序树的特点: 中序遍历后,就是从小到大排序了。 根节点的最左边的值,就是树中最小的值。 根节点的最右边的值,就是树中最大的值。 创建二叉排 阅读全文
摘要:
c/c++ 图的最短路径 Dijkstra(迪杰斯特拉)算法 图的最短路径的概念: 一位旅客要从城市A到城市B,他希望选择一条途中中转次数最少的路线。假设途中每一站都需要换车,则这个问题反映到图上就是要找一条从顶点A到B所含边的数量最少的路径。我们只需从顶点A出发对图作广度优先遍历,一旦遇到顶点B就 阅读全文
摘要:
c/c++求解图的关键路径 critical path 上图表示一个工程,工程以V1为起始子工程,V9为终止子工程。 由图可以看出,要开工V5工程,必须在完成工程V2和V3后才可以。 完成V2需要a1(6)个小时,完成V3需要a2(4)个小时。假设V2和V3同时开工,V3就会提前2个小时完工,但是这 阅读全文
摘要:
c/c++ 有向无环图 directed acycline graph 概念: 图中点与点之间的线是有方向的,图中不存在环。用邻接表的方式,实现的图。 名词: 顶点的入度:到这个顶点的线的数量。 顶点的出度:从这个顶点出发的线的数量。 实现思路: 1,计算出每个顶点的入度,存放到辅助数组cnt中 2 阅读全文
摘要:
c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: 假设要在n个城市之间建立公路,则连通n个城市只需要n 1条线路。这时,自然会考虑,如何在最节省经费的前提下建立这个公路网络。 每2个城市之间都可以设置一条公路,相 阅读全文
摘要:
c/c++ 用普利姆(prim)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: 假设要在n个城市之间建立公路,则连通n个城市只需要n 1条线路。这时,自然会考虑,如何在最节省经费的前提下建立这个公路网络。 每2个城市之间都可以设置一条公路,相应 阅读全文
摘要:
连通图的遍历(深度遍历/广度遍历) 概念:图中的所有节点都要遍历到,并且只能遍历一次。 深度遍历 广度遍历 深度遍历 概念:从一个给定的顶点开始,找到一条边,沿着这条边一直遍历。 广度遍历 概念:从一个给定的顶点开始,找到这个顶点下的所有子顶点后,再找下一层的子顶点。 深度遍历的实现思路 1,创建一 阅读全文
摘要:
c/c++ 图的创建及图的相关函数(链表法) 图的概念 图由点和线组成 知道了图中有多少个点,和哪些点之间有线,就可以把一张图描绘出来 点之间的线,分有方向和无方向 创建图 创建图,实际就是创建出节点,和节点之间的线。 下面的代码实现了上面的图的创建 graph_link.h graph_link. 阅读全文
摘要:
c/c++ 图相关的函数(二维数组法) 遍历图 插入顶点 添加顶点间的线 删除顶点 删除顶点间的线 摧毁图 取得与v顶点有连线的第一个顶点 取得与v1顶点,v1顶点之后的v2顶点的之后的有连线的第一个顶点 graph_mtx.h graph_mtx.c graph_mtxmain.c 阅读全文