Java " />

扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

java dfs绠楁硶鎬庝箞瀹炵幇

扬州沐宇科技
2024-05-25 10:14:13
Java

娣卞害浼樺厛鎼滅储锛圖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>

扫码添加客服微信