def bfs(G, start): state = {} parentList = {} order = [] # print "bfs started -- start :", start.name for vert in G: state[vert.name] = "undiscovered" parentList[vert.name] = None state[start.name] = "discovered" Q = Queue() Q.enqueue(start) while Q.isEmpty() == False: u = Q.dequeue() order.append(u.name) # print "Dequeued vertex", u.name # print "vertex adjs " # for v in u.connectedTo: # print v.name, # print "" for v in u.connectedTo: if state[v.name] == "undiscovered": state[v.name] == "discovered" parentList[v.name] = u.name vert_v = G.getVertex(v.name) if Q.contains(vert_v) == False: Q.enqueue(vert_v) # print "Enqueued new", v.name state[u.name] = "processed" return order
def test_enqueue(): queue = Queue(2) queue.enqueue(12) queue.enqueue(5) assert(queue.contains(12)) assert(queue.contains(5))