Skip to content

Commit d87ec0a

Browse files
committed
BFS code added
1 parent 34c0da5 commit d87ec0a

File tree

5 files changed

+374
-0
lines changed

5 files changed

+374
-0
lines changed

BredthFirstSearch/.idea/BredthFirstSearch.iml

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

BredthFirstSearch/.idea/misc.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

BredthFirstSearch/.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

BredthFirstSearch/.idea/workspace.xml

Lines changed: 297 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

BredthFirstSearch/BFS.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
2+
# Vertices or Nodes in given Graph
3+
class Node(object):
4+
def __init__(self, name):
5+
self.name = name # Name of Node
6+
self.adjacencyList = [] # Adjacency List
7+
self.visited = False # Boolean to check if we have visited a node or not
8+
self.predecessor = None # Previous Vertex/Node in BFS
9+
10+
11+
# Bredth First Search
12+
class BredthFirstSearch(object):
13+
# startNode: Starting Node from where we need to start BFS
14+
def bfs(self, startNode):
15+
# For BFS, using Queue as ADT
16+
queue = []
17+
# Initially, first value in the Queue
18+
queue.append(startNode)
19+
# That node is visited, so True
20+
startNode.visited = True
21+
22+
# While queue is not empty
23+
while queue:
24+
# Actual node is the first node. FIFO Queue
25+
actualNode = queue.pop(0)
26+
print('%s' % actualNode.name)
27+
28+
# Visit all Neighbors of the current Node
29+
for n in actualNode.adjacencyList:
30+
# If Neighboring Node has not been visited, set visited to True and add to Queue
31+
if not n.visited:
32+
n.visited = True
33+
queue.append(n)
34+
35+
36+
# Testing
37+
if __name__ == '__main__':
38+
node1 = Node('A')
39+
node2 = Node('B')
40+
node3 = Node('C')
41+
node4 = Node('D')
42+
node5 = Node('E')
43+
node6 = Node('F')
44+
45+
node1.adjacencyList.append(node2)
46+
node1.adjacencyList.append(node3)
47+
node2.adjacencyList.append(node4)
48+
node4.adjacencyList.append(node5)
49+
node4.adjacencyList.append(node6)
50+
51+
BFS = BredthFirstSearch()
52+
BFS.bfs(node1)
53+
54+
# -------------------------- EOC --------------------------

0 commit comments

Comments
 (0)