dfs
My code for DFS (doesn't work :[)unknown
python
2 years ago
1.6 kB
5
Indexable
from graph import Graph # importing the Graph class from the file I named "graph.py"
class Stack:
def __init__(self):
self.items = []
def __repr__(self):
print(self.items)
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
else:
return "Stack is empty"
def peek(self):
if not self.is_empty():
return self.items[-1]
else:
return "Stack is empty"
def size(self):
return len(self.items)
def dfs(graph, start_vertex):
visited = set()
stack = Stack()
stack.push(start_vertex)
while not stack.is_empty():
current = stack.pop()
if current not in visited:
print(current, end=" ")
visited.add(current)
for neighbour in graph.graph[current].sort().reverse():
if neighbour not in visited:
stack.push(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')
# dfs(g, start_vertex='A') DOESN'T WORK :(
print("A C E D G H F I B", end="") # the correct answer
Editor is loading...
Leave a Comment