【java】深度优先搜索和广度优先搜索
来源:互联网 发布:怎么知道ftp端口是多少 编辑:程序博客网 时间:2024/05/17 22:12
import java.util.LinkedList;import java.util.Queue;public class Q1 { class Vertex //顶点类 { String vertex_name="sb"; boolean new_or_old=true; //"true" means "new" Vertex(String vertex_name,boolean new_or_old) { this.vertex_name=vertex_name; this.new_or_old=new_or_old; } } public int vertex_count=0; public Vertex v[] = new Vertex[6]; public boolean [][] Adj_Matrix=new boolean [6][6]; int search_count=vertex_count; public void set_vertex() { v[0]=new Vertex("v1",true); v[1]=new Vertex("v2",true); v[2]=new Vertex("v3",true); v[3]=new Vertex("v4",true); v[4]=new Vertex("v5",true); v[5]=new Vertex("v6",true); } public void setAdj_Matrix() { Adj_Matrix[0][0]=false; Adj_Matrix[0][1]=true; Adj_Matrix[0][2]=false; Adj_Matrix[0][3]=true; Adj_Matrix[0][4]=false; Adj_Matrix[0][5]=true; Adj_Matrix[1][0]=true; Adj_Matrix[1][1]=false; Adj_Matrix[1][2]=true; Adj_Matrix[1][3]=true; Adj_Matrix[1][4]=true; Adj_Matrix[1][5]=false; Adj_Matrix[2][0]=false; Adj_Matrix[2][1]=true; Adj_Matrix[2][2]=false; Adj_Matrix[2][3]=false; Adj_Matrix[2][4]=true; Adj_Matrix[2][5]=false; Adj_Matrix[3][0]=true; Adj_Matrix[3][1]=true; Adj_Matrix[3][2]=false; Adj_Matrix[3][3]=false; Adj_Matrix[3][4]=true; Adj_Matrix[3][5]=true; Adj_Matrix[4][0]=false; Adj_Matrix[4][1]=true; Adj_Matrix[4][2]=true; Adj_Matrix[4][3]=true; Adj_Matrix[4][4]=false; Adj_Matrix[4][5]=false; Adj_Matrix[5][0]=true; Adj_Matrix[5][1]=false; Adj_Matrix[5][2]=false; Adj_Matrix[5][3]=true; Adj_Matrix[5][4]=false; Adj_Matrix[5][5]=false; } public void renew_vertex() //将全部顶点状态设置为new { for(vertex_count=0;vertex_count<6;vertex_count++) { v[vertex_count].new_or_old=true; } } public void DFSTraverse() //深度优先搜索 { renew_vertex(); for(vertex_count=0;vertex_count<6;vertex_count++) { if(v[vertex_count].new_or_old==true) { search_count=vertex_count; Search(v[vertex_count]); } } } private void Search(Vertex vertex) { //深度优先搜索search方法 // TODO 自动生成的方法存根 System.out.println(vertex.vertex_name); vertex.new_or_old=false; for(int next_vertex_count=0;next_vertex_count<6;next_vertex_count++) { if(v[next_vertex_count].new_or_old==true&&Adj_Matrix[search_count][next_vertex_count]==true) { search_count=next_vertex_count; Search(v[next_vertex_count]); } } } public void BFSTraverse() //广度优先搜索 { renew_vertex(); for(vertex_count=0;vertex_count<6;vertex_count++) { if(v[vertex_count].new_or_old==true) { search_count=vertex_count; BSearch(v[vertex_count]); } } } private void BSearch(Vertex vertex) //广度优先搜索search方法 { // TODO 自动生成的方法存根 Queue<Integer> queue = new LinkedList<Integer>(); //创建队列 System.out.println(vertex.vertex_name); vertex.new_or_old=false; queue.add(search_count); while(!queue.isEmpty()) { search_count=queue.element(); queue.poll(); for(int next_vertex_count=0;next_vertex_count<6;next_vertex_count++) { if(v[next_vertex_count].new_or_old==true&&Adj_Matrix[search_count][next_vertex_count]==true) { System.out.println(v[next_vertex_count].vertex_name); v[next_vertex_count].new_or_old=false; queue.add(next_vertex_count); } } } } public static void main(String[] args) { // TODO 自动生成的方法存根 Q1 q=new Q1(); q.set_vertex(); q.setAdj_Matrix(); //测试深度优先搜索 System.out.println("深度优先搜索队列为:"); q.DFSTraverse(); //测试广度优先搜索 System.out.println("广度优先搜索队列为:"); q.BFSTraverse(); }}
0 0
- 深度优先搜索和广度优先搜索
- 深度优先搜索和广度优先搜索
- 深度优先搜索和广度优先搜索
- 深度优先搜索和广度优先搜索
- 广度优先搜索和深度优先搜索
- 广度优先搜索和深度优先搜索
- 深度优先搜索和广度优先搜索
- 广度优先搜索和深度优先搜索
- 深度优先搜索和广度优先搜索
- 深度优先搜索和广度优先搜索
- 深度优先搜索和广度优先搜索
- 深度优先搜索和广度优先搜索
- 广度优先搜索和深度优先搜索
- 深度优先搜索和广度优先搜索
- 深度优先搜索和广度优先搜索
- Java实现深度优先搜索和广度优先搜索
- 【java】深度优先搜索和广度优先搜索
- 深度和广度优先搜索
- kafka数据可靠性深度解读
- 2017华为软件精英挑战赛总结
- 解决VSCODE界面出现阴影-MAC版
- elasticsearch查询语句篇
- Kinect V2基本资料
- 【java】深度优先搜索和广度优先搜索
- ActiveMQ的介绍
- 第10章 提纲掣领
- LeetCode Algorithms 5. Longest Palindromic Substring 题解
- 将输入流(InputStream)对象保存到数据库(mysql)
- Retrofit2.0使用详解&&封装
- 关于ggplot2画散点图、条形图的一些细节认识
- 如何利用 Chrome 开发者工具远程调试 Android 中的原生 WebView?
- 继承——java面向对象