最小生成树(深度)
来源:互联网 发布:iphone清理内存软件 编辑:程序博客网 时间:2024/05/16 19:51
package d20图的最小生成树;//顶点类public class Vertex { public char label; public boolean wasVisited; public Vertex (char label){ this.label = label; }}
package d20图的最小生成树;import d03栈和队列.MyStack;//图public class Graph { //顶点数组 private Vertex[] vertexList; //临界矩阵 private int [] [] adjMat; //顶点的最大数目 private int maxSize=20; //栈 private MyStack stack; //当前节点 private int nVertex; public Graph(){ vertexList = new Vertex[maxSize]; adjMat = new int [maxSize][maxSize]; for(int i = 0;i<maxSize;i++){ for(int j = 0;j<maxSize;j++){ adjMat[i][j]=0; } } nVertex=0; stack = new MyStack(); } //添加顶点 public void addVertex (char label){ vertexList[nVertex++]=new Vertex(label); } //添加边 public void addEdge(int start,int end){ adjMat[start][end]=1; adjMat[end][start]=1; } public int getadjUnvisitedVertex(int v){ for(int i = 0;i<nVertex;i++){ if(adjMat[v][i]==1&&vertexList[i].wasVisited==false){ return i; } } return -1; } //深度优先搜索 public void dfs(){ //首先访问0号顶点 vertexList[0].wasVisited=true; //压入栈种 stack.push(0); //显示该顶点 displayVertex(0); while(!stack.isEmpty()){ //获得一个为访问过的邻接点 int v = getadjUnvisitedVertex((int)stack.peel()); if(v==-1){ //弹出一个顶点 stack.pop(); }else{ vertexList[v].wasVisited=true; displayVertex(v); stack.push(v); } } //搜索完以后要将访问信息修改 for(int i = 0;i<nVertex;i++){ vertexList[i].wasVisited=false; } } public void displayVertex(int v){ System.out.print(vertexList[v].label+" "); } public void mst(){ //首先访问0号顶点 vertexList[0].wasVisited=true; //压入栈种 stack.push(0); while(!stack.isEmpty()){ //获取当前顶点 int currentVertex = stack.peel(); //获得一个为访问过的邻接点 int v = getadjUnvisitedVertex(currentVertex); if(v==-1){ //弹出一个顶点 stack.pop(); }else{ vertexList[v].wasVisited=true; stack.push(v); displayVertex(currentVertex); System.out.print("-"); displayVertex(v); System.out.println(" "); } } //搜索完以后要将访问信息修改 for(int i = 0;i<nVertex;i++){ vertexList[i].wasVisited=false; } }}
package d20图的最小生成树;public class TestGraph { public static void main(String[] args) { Graph g = new Graph(); g.addVertex('A'); g.addVertex('B'); g.addVertex('C'); g.addVertex('D'); g.addVertex('E'); g.addEdge(0, 1); g.addEdge(0, 2); g.addEdge(0, 3); g.addEdge(0, 4); g.addEdge(1, 2); g.addEdge(1, 3); g.addEdge(1, 4); g.addEdge(2, 3); g.addEdge(2, 4); g.addEdge(3, 4); g.mst(); }}
阅读全文
0 0
- 最小生成树(深度)
- 深度广度优先遍历最小生成树
- 图的深度优先(非递归)、广度优先、最小生成树的C++实现
- 图与路径(深度优先,广度优先,最小生成树)
- 图的广度遍历、深度遍历及最小生成树书算法(Prim、Kruskal)
- 图的实现(带有深度/广度优先遍历/最小生成树算法)
- 邻接矩阵实现图+深度/广度优先遍历+最小生成树
- 邻接矩阵实现图+深度/广度优先遍历+最小生成树
- 图基本算法:深度广度遍历最小生成树
- 最小生成树(Prim)(普利姆最小生成树)
- 最小方差生成树(最小生成树)
- 二叉树的最小深度(递归)
- 二叉树深度(最大和最小)
- 树------最小数目深度
- 二叉树最小深度
- 树的最小深度
- 最小生成树(prim)
- 最小生成树(Kruskal)
- acm 括号匹配(二)
- 项目中遇到的问题与解决方法——持续添加
- 一种分隔屏幕显示效果
- 技术文章 | 王思聪"吃翔"项目
- 什么是大数据?你需要知道的…
- 最小生成树(深度)
- ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案
- 解决 ubuntu audacity 无法启动
- GKQuadtreeNode
- UVa714 例题8-10 抄书
- [Usaco2007 Jan]Telephone Lines架设电话线
- linux库的加载原理
- 优云蒋君伟:自动化运维成本仍然很高
- nodejs-npm-webpack安装