java dfs绠楁硶鎬庝箞瀹炵幇
娣卞害浼樺厛鎼滅储锛圖FS锛夋槸涓€绉嶇敤浜庨亶鍘嗘垨鎼滅储鏍戞垨鍥剧殑绠楁硶锛屽叾鍩烘湰鎬濇兂鏄粠璧峰鑺傜偣寮€濮嬶紝娌跨潃涓€鏉¤矾寰勫敖鍙兘娣卞湴鎼滅储锛岀洿鍒板埌杈惧彾瀛愯妭鐐规垨鑰呮棤娉曠户缁悳绱负姝紝鐒跺悗鍥炴函鍒颁笂涓€涓妭鐐癸紝閫夋嫨鍙︿竴鏉¤矾寰勭户缁悳绱€備互涓嬫槸涓€涓畝鍗曠殑Java瀹炵幇DFS绠楁硶鐨勪緥瀛愶細
import java.util.List;
import java.util.Stack;
public class DFS {
public void dfs(List<List<Integer>> graph, int start) {
boolean[] visited = new boolean[graph.size()];
Stack<Integer> stack = new Stack<>();
stack.push(start);
while (!stack.isEmpty()) {
int node = stack.pop();
if (!visited[node]) {
System.out.print(node + " ");
visited[node] = true;
for (int neighbor : graph.get(node)) {
if (!visited[neighbor]) {
stack.push(neighbor);
}
}
}
}
}
public static void main(String[] args) {
List<List<Integer>> graph = List.of(
List.of(1, 2),
List.of(0, 2, 3),
List.of(0, 1, 4),
List.of(1),
List.of(2)
);
DFS dfs = new DFS();
dfs.dfs(graph, 0);
}
}
鍦ㄤ笂闈㈢殑渚嬪瓙涓紝鎴戜滑棣栧厛鍒涘缓浜嗕竴涓猙oolean鏁扮粍鐢ㄤ簬璁板綍鑺傜偣鏄惁琚闂繃锛岀劧鍚庡垱寤轰竴涓爤鐢ㄤ簬瀛樺偍寰呰闂殑鑺傜偣銆傚湪DFS鏂规硶涓紝浠庤捣濮嬭妭鐐瑰紑濮嬶紝涓嶆柇鍦伴亶鍘嗛偦灞呰妭鐐癸紝骞跺皢鏈闂繃鐨勯偦灞呰妭鐐瑰姞鍏ユ爤涓€傚綋鏍堜负绌烘椂锛岃〃绀烘悳绱㈠畬鎴愩€傚湪main鏂规硶涓紝鎴戜滑瀹氫箟浜嗕竴涓畝鍗曠殑鍥撅紝骞惰皟鐢╠fs鏂规硶浠庤妭鐐?寮€濮嬭繘琛屾繁搴︿紭鍏堟悳绱€?/p>