BFS框架
BFS框架
1 // 計算從起點 start 到終點 target 的最近距離 2 int BFS(Node start, Node target) { 3 Queue<Node> q; // 核心數據結構 4 Set<Node> visited; // 避免走回頭路 5 6 q.offer(start); // 將起點加入隊列 7 visited.add(start); 8 int step = 0; // 記錄擴散的步數 9 10 while (q not empty) { 11 int sz = q.size(); 12 /* 將當前隊列中的所有節點向四周擴散 */ 13 for (int i = 0; i < sz; i++) { 14 Node cur = q.poll(); 15 /* 劃重點:這里判斷是否到達終點 */ 16 if (cur is target) 17 return step; 18 /* 將 cur 的相鄰節點加入隊列 */ 19 for (Node x : cur.adj()) { 20 if (x not in visited) { 21 q.offer(x); 22 visited.add(x); 23 } 24 } 25 } 26 /* 劃重點:更新步數在這里 */ 27 step++; 28 } 29 }
原文鏈接:https://labuladong.gitee.io/algo/4/30/114/
雪兒言

浙公網安備 33010602011771號