Skip to content

Commit 1c8a177

Browse files
committed
feat: bfs 구현
1 parent 71c7a58 commit 1c8a177

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

yoonexample/src/main/java/graph/ListGraph.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import java.util.StringJoiner;
44
import list.DummyDoublyLinkedList;
55
import list.List;
6+
import queue.LinkedListQueue;
7+
import queue.Queue;
68
import stack.ListStack;
79
import stack.Stack;
810

@@ -73,6 +75,33 @@ public String depthFirstSearch(Enum<?> startV) {
7375
return sj.toString();
7476
}
7577

78+
@Override
79+
public String breadthFirstSearch(Enum<?> startV) {
80+
boolean[] visited = new boolean[vertices.length];
81+
StringJoiner sj = new StringJoiner(" ");
82+
Queue<Enum<?>> vertexQueue = new LinkedListQueue<>();
83+
vertexQueue.enqueue(startV);
84+
85+
while (!vertexQueue.isEmpty()) {
86+
Enum<?> visitV = vertexQueue.dequeue();
87+
88+
if (visitVertex(visited, visitV)) {
89+
sj.add(visitV.toString());
90+
}
91+
92+
List<Enum<?>> vertexList = vertices[visitV.ordinal()];
93+
for (int i = 0; i < vertexList.size(); i++) {
94+
Enum<?> vertex = vertexList.get(i);
95+
if (!visited[vertex.ordinal()]) {
96+
vertexQueue.enqueue(vertex);
97+
}
98+
}
99+
100+
}
101+
102+
return sj.toString();
103+
}
104+
76105
private boolean visitVertex(boolean[] visited, Enum<?> vertex) {
77106
if (visited[vertex.ordinal()]) {
78107
return false;

0 commit comments

Comments
 (0)