日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java实现图的深度和广度优先遍历算法

發布時間:2025/3/20 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实现图的深度和广度优先遍历算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述:

? 最近要學習寫網絡爬蟲,所以把圖的深度和廣度搜索都再溫習一下。


圖結構展示:



實現過程:

首先,我們來看看圖結構在代碼中的實現。有三塊邏輯:

1.圖中的節點:

public class GraphNode {public List<GraphEdge> edgeList = null;private String label = "";public GraphNode(String label) {this.label = label;if (edgeList == null) {edgeList = new ArrayList<GraphEdge>();}}/*** 給當前節點添加一條邊* GraphNode* @param edge* 添加的邊*/public void addEdgeList(GraphEdge edge) {edgeList.add(edge);}public String getLabel() {return label;} } ?

2.圖中的邊:

?

public class GraphEdge {private GraphNode nodeLeft;private GraphNode nodeRight;/*** @param nodeLeft* 邊的左端* @param nodeRight* 邊的右端*/public GraphEdge(GraphNode nodeLeft, GraphNode nodeRight) {this.nodeLeft = nodeLeft;this.nodeRight = nodeRight;}public GraphNode getNodeLeft() {return nodeLeft;}public GraphNode getNodeRight() {return nodeRight;}} ?

3.把節點和邊組合成一個圖結構:

?

public class MyGraph {private List<GraphNode> nodes = null;public void initGraph(int n) {if (nodes == null) {nodes = new ArrayList<GraphNode>();}GraphNode node = null;for (int i = 0; i < n; i++) {node = new GraphNode(String.valueOf(i));nodes.add(node);}}public void initGraph(int n, boolean b) {initGraph(n);GraphEdge edge01 = new GraphEdge(nodes.get(0), nodes.get(1));GraphEdge edge02 = new GraphEdge(nodes.get(0), nodes.get(2));GraphEdge edge13 = new GraphEdge(nodes.get(1), nodes.get(3));GraphEdge edge14 = new GraphEdge(nodes.get(1), nodes.get(4));GraphEdge edge25 = new GraphEdge(nodes.get(2), nodes.get(5));GraphEdge edge26 = new GraphEdge(nodes.get(2), nodes.get(6));GraphEdge edge37 = new GraphEdge(nodes.get(3), nodes.get(7));GraphEdge edge47 = new GraphEdge(nodes.get(4), nodes.get(7));GraphEdge edge56 = new GraphEdge(nodes.get(5), nodes.get(6));nodes.get(0).addEdgeList(edge01);nodes.get(0).addEdgeList(edge02);nodes.get(1).addEdgeList(edge13);nodes.get(1).addEdgeList(edge14);nodes.get(2).addEdgeList(edge25);nodes.get(2).addEdgeList(edge26);nodes.get(3).addEdgeList(edge37);nodes.get(4).addEdgeList(edge47);nodes.get(5).addEdgeList(edge56);}public void initGraph() {initGraph(8, false);}public List<GraphNode> getGraphNodes() {return nodes;} } ?
有了圖的結構,我們就可以進行一些實際的操作了。

深度優先搜索:

?

public class DFSearch {/*** 深度遍歷* DFSearch* @param node* 當前節點* @param visited* 被訪問過的節點列表*/public void searchTraversing(GraphNode node, List<GraphNode> visited) {// 判斷是否遍歷過if (visited.contains(node)) {return;}visited.add(node);System.out.println("節點:" + node.getLabel());for (int i = 0; i < node.edgeList.size(); i++) {searchTraversing(node.edgeList.get(i).getNodeRight(), visited);}} } ?

廣度優先搜索:

?

public class BFSearch {/*** 廣度優先搜索* BFSearch* @param node* 搜索的入口節點*/public void searchTraversing(GraphNode node) {List<GraphNode> visited = new ArrayList<GraphNode>(); // 已經被訪問過的元素Queue<GraphNode> q = new LinkedList<GraphNode>(); // 用隊列存放依次要遍歷的元素q.offer(node);while (!q.isEmpty()) {GraphNode currNode = q.poll();if (!visited.contains(currNode)) {visited.add(currNode);System.out.println("節點:" + currNode.getLabel());for (int i = 0; i < currNode.edgeList.size(); i++) {q.offer(currNode.edgeList.get(i).getNodeRight());}}}} }

?

運行結果:



源碼下載:

http://download.csdn.net/detail/u013761665/8968443

總結

以上是生活随笔為你收集整理的Java实现图的深度和广度优先遍历算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 69堂视频| 欧州一区二区三区 | 成年人黄色av | 国内自拍视频网站 | 自拍偷拍亚洲精品 | 欧美国产成人在线 | 国产一级做a | 一区二区三区免费 | 手机看黄色| 亚洲啪 | 九色免费视频 | 欧美肉丝袜videos办公室 | 日韩美女激情 | 日韩欧美理论片 | 娇妻高潮浓精白浆xxⅹ | 五级 黄 色 片 | 久久久久免费看 | 成人动漫在线观看视频 | 亚洲理论中文字幕 | 雪白的扔子视频大全在线观看 | 麻豆资源| 跪求黄色网址 | 麻豆tv在线观看 | 国产jzjzjz丝袜老师水多 | 一级国产视频 | 欧美日韩综合在线 | 欧美日韩亚洲视频 | 手机在线看片1024 | 日本久色| 一级 黄 色 片69 | 超碰伦理 | 亚洲天堂一区二区三区四区 | 在线无码va中文字幕无码 | 欧美性猛交xxxx免费看 | 性天堂网 | 日韩av在线网 | 亚洲资源在线 | 日本丰满熟妇hd | 污污内射在线观看一区二区少妇 | 午夜一区二区视频 | 色香色香欲天天天影视综合网 | 一级看片免费视频 | 日本a级一区 | 日韩欧美一级在线 | 亚洲一区二区三区免费观看 | 欧美人妻精品一区二区 | 精品视频在线免费观看 | 亚洲精品美女久久久 | av中文字幕一区二区三区 | 成人在线超碰 | 欧美性视频播放 | 大牛影视剧免费播放在线 | 一级片日韩 | 久久久精品网站 | 中文字幕无码精品亚洲资源网久久 | 夜夜精品一区二区无码 | 亚洲一区二区网站 | 秘密爱大尺度做爰呻吟 | 免费黄色av| 国产九九九精品 | 免费在线国产精品 | 综合久久伊人 | 水蜜桃91| 暗呦丨小u女国产精品 | 午夜福利视频一区二区 | 色综合久久久无码中文字幕波多 | 在线观看污 | 天天天天躁天天爱天天碰2018 | 久久久久亚洲av无码网站 | 最新视频 - 8mav| 欧美日韩另类视频 | 国产精品久久久 | 免费一级黄色 | 中文在线а√在线8 | 亚洲av永久无码精品放毛片 | 日本免费专区 | 91大神在线观看视频 | 精品一区二区免费看 | www.精品一区 | 波多野结衣av一区二区全免费观看 | 国产经典久久久 | 亚洲五月综合 | 叶爱在线 | 在线a网 | 国产综合亚洲精品一区二 | 大陆明星乱淫(高h)小说 | 国产精品99精品无码视 | 久久91亚洲精品中文字幕奶水 | 婷婷色综合 | 黄色同人网站 | 久久网站免费看 | 一线毛片 | 成人在线视频一区 | 性欧美巨大 | 日批网站在线观看 | 亚洲喷潮| 中文字幕一区三区 | 国产污视频在线观看 | 亚洲网站在线 |