From 135967890f65b7895aea69688a6d44c62662a25a Mon Sep 17 00:00:00 2001 From: NANCY ANAND <41587186+nancyanand2807@users.noreply.github.com> Date: Mon, 21 Oct 2019 20:32:26 +0530 Subject: [PATCH] BFS I have added BFS implementation in python. Also the driver code is provided. --- bfs.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 bfs.py diff --git a/bfs.py b/bfs.py new file mode 100644 index 0000000..05c9639 --- /dev/null +++ b/bfs.py @@ -0,0 +1,63 @@ +# Python3 Program to print BFS traversal + +from collections import defaultdict + +# This class represents a directed graph +# using adjacency list representation +class Graph: + + # Constructor + def __init__(self): + + # default dictionary to store graph + self.graph = defaultdict(list) + + # function to add an edge to graph + def addEdge(self,u,v): + self.graph[u].append(v) + + # Function to print a BFS of graph + def BFS(self, s): + + # Mark all the vertices as not visited + visited = [False] * (len(self.graph)) + + # Create a queue for BFS + queue = [] + + # Mark the source node as + # visited and enqueue it + queue.append(s) + visited[s] = True + + while queue: + + # Dequeue a vertex from + # queue and print it + s = queue.pop(0) + print (s, end = " ") + + # Get all adjacent vertices of the + # dequeued vertex s. If a adjacent + # has not been visited, then mark it + # visited and enqueue it + for i in self.graph[s]: + if visited[i] == False: + queue.append(i) + visited[i] = True + +# Driver code + + +g = Graph() +g.addEdge(0, 1) +g.addEdge(0, 2) +g.addEdge(1, 2) +g.addEdge(2, 0) +g.addEdge(2, 3) +g.addEdge(3, 3) + +print ("Following is Breadth First Traversal" + " (starting from vertex 2)") +g.BFS(2) +