Skip to content

Instantly share code, notes, and snippets.

@sumedhe
Created November 21, 2016 05:52
Show Gist options
  • Save sumedhe/952dc50f2ab90cab97e6d50150ce46af to your computer and use it in GitHub Desktop.
Save sumedhe/952dc50f2ab90cab97e6d50150ce46af to your computer and use it in GitHub Desktop.
class Vertex:
def __init__(self, value):
self.value = value
self.adjacents = []
self.state = 0
class Graph:
def __init__(self):
self.vertices = []
# self.edges = []
def addVertex(self, vertex):
self.vertices.append(vertex)
def addEdge(self, start, end):
start.adjacents.append(end)
end.adjacents.append(start)
def addEdges(self, edges):
for i in edges:
self.addEdge(self.getVertex(i[0]), self.getVertex(i[1]))
def getVertex(self, value):
for i in self.vertices:
if i.value == value:
return i
def removeVertex(self, vertex):
if vertex in self.vertices:
self.vertices.remove(vertex)
def removeEdge(self, start, end):
if end in start.adjacents:
start.adjacents.remove(end)
def printGraph(self):
for vert in self.vertices:
print("{0} : {1}".format(vert.value, ", ".join([str(x.value) for x in vert.adjacents])))
def BFS(self, s):
for vert in self.vertices:
vert.state = 0
queue = [s]
s.state = 1
while queue:
s = queue.pop(0)
print(s.value)
s.state = 2
for vert in s.adjacents:
if vert.state == 0:
queue.append(vert)
vert.state = 1
def DFS(self, s):
for vert in self.vertices:
vert.state = 0
stack = [s]
s.state = 1
while stack:
s = stack.pop()
for vert in s.adjacents:
if vert.state == 0:
stack.append(vert)
vert.state = 1
vert.pred = s
print(s.value)
s.state = 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment