bfs

Code for BFS
 avatar
unknown
python
a year ago
1.3 kB
5
Indexable
from graph import Graph  # importing the Graph class from the file I named "graph.py"


class Queue:
    def __int__(self):
        self.items = []

    def __repr__(self):
        print(self.items)

    def is_empty(self):
        return len(self.items) == 0

    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        if not self.is_empty():
            return self.items.pop()
        else:
            return "Queue is empty"

    def size(self):
        return len(self.items)


def bfs(graph, start_vertex):
    visited = set()
    queue = Queue()
    queue.enqueue(start_vertex)

    while not queue.is_empty():
        current = queue.dequeue()
        if current not in visited:
            print(current, end=" ")
            visited.add(current)
        for neighbour in graph.graph[current]:
            if neighbour not in visited:
                queue.enqueue(neighbour)
    # print(visited)


g = Graph()
g.add_vertex('A')
g.add_vertex('B')
g.add_vertex('C')
g.add_vertex('D')
g.add_vertex('E')
g.add_vertex('F')
g.add_vertex('G')
g.add_vertex('H')
g.add_vertex('I')
g.add_edge('A', 'E')
g.add_edge('A', 'C')
g.add_edge('E', 'H')
g.add_edge('H', 'I')
g.add_edge('C', 'D')
g.add_edge('D', 'E')
g.add_edge('C', 'G')
g.add_edge('G', 'F')
g.add_edge('F', 'B')
bfs(g, start_vertex='A')
Editor is loading...
Leave a Comment