Question: Why does the queue switch elements around when I use the remove method? I am trying to implement a BFS algorithm. I ' m using

Why does the queue switch elements around when I use the remove method? I am trying to implement a BFS algorithm. I'm using Java 17.
allVertices.clear();
vertex1.status = "discovered";
Queue queue = new PriorityQueue<>();
queue.add(vertex1);
while (!queue.isEmpty()){
System.out.print("Queue"+ queue);
Vertex toRemove = queue.remove();
ArrayList oldNeighbors = new ArrayList(toRemove.neighbors);
// System.out.print("Queue added" + queue);
for (int i =0; i < oldNeighbors.size(); i++){
toRemove.disconnect(oldNeighbors.get(i));
if (oldNeighbors.get(i).status.equals("undiscovered")){
oldNeighbors.get(i).status = "discovered";
queue.add(oldNeighbors.get(i));
toRemove.connect(oldNeighbors.get(i));
}
// System.out.println("neighbors:"+ toRemove.neighbors);
}
toRemove.status = "explored";
allVertices.add(toRemove);
}// BFS algorithm
allVertices.clear();
vertex1.status = "discovered";
Queue queue = new PriorityQueue<>();
queue.add(vertex1);
while (!queue.isEmpty()){
System.out.print("Queue"+ queue);
Vertex toRemove = queue.remove();
ArrayList oldNeighbors = new ArrayList(toRemove.neighbors);
// System.out.print("Queue added" + queue);
for (int i =0; i < oldNeighbors.size(); i++){
toRemove.disconnect(oldNeighbors.get(i));
if (oldNeighbors.get(i).status.equals("undiscovered")){
oldNeighbors.get(i).status = "discovered";
queue.add(oldNeighbors.get(i));
toRemove.connect(oldNeighbors.get(i));
}
// System.out.println("neighbors:"+ toRemove.neighbors);
}
toRemove.status = "explored";
allVertices.add(toRemove);
}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!