欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java廣度遍歷和深度遍歷

阮建安1年前8瀏覽0評論

在計算機科學中,廣度優先搜索和深度優先搜索是圖形搜索算法的兩種主要算法之一。這兩個算法在Java中也都有實現。

首先,我們來看看廣度優先搜索。廣度優先搜索是一種圖形搜索算法,可以用來解決常見的問題,如最短路徑和迷宮問題。

public void breadthFirstSearch(Node startNode) {
Queuequeue = new LinkedList<>();
HashSetvisited = new HashSet<>();
queue.add(startNode);
visited.add(startNode);
while(!queue.isEmpty()) {
Node currentNode = queue.remove();
System.out.print(currentNode.value + " ");
for(Node neighbor : currentNode.neighbors) {
if(!visited.contains(neighbor)) {
visited.add(neighbor);
queue.add(neighbor);
}
}
}
}

廣度優先搜索使用一個隊列來記錄當前訪問的節點,并使用一個HashSet來記錄已訪問的節點。我們從起始節點開始,逐個遍歷它的相鄰節點,并將相鄰節點加入隊列中。我們繼續重復此過程,直到隊列為空,即所有節點均已被訪問。

然后,我們來看看深度優先搜索。深度優先搜索的實現方式是使用遞歸函數來實現的。

public void depthFirstSearch(Node startNode) {
HashSetvisited = new HashSet<>();
depthFirstSearchRecur(startNode, visited);
}
private void depthFirstSearchRecur(Node currentNode, HashSetvisited) {
System.out.print(currentNode.value + " ");
visited.add(currentNode);
for(Node neighbor : currentNode.neighbors) {
if(!visited.contains(neighbor)) {
depthFirstSearchRecur(neighbor, visited);
}
}
}

深度優先搜索使用一個HashSet來記錄已訪問的節點。從起始節點開始,遍歷當前節點的相鄰節點并遞歸地遍歷它們。我們繼續重復此過程,直到所有節點均已被訪問。

總結來說,廣度優先搜索和深度優先搜索是解決各種圖形搜索問題的經典算法,在Java中都有實現。選擇哪種算法取決于特定問題的特征和需求。

下一篇php 399