# CSPT 19 Lecture 11
```
from collections import deque
def breadthFirstTraversal(graph, startingNode):
queue = deque()
queue.append(startingNode)
visited = set()
while len(queue) > 0:
currNode = queue.popleft()
if currNode not in visited:
visited.add(currNode)
print(currNode)
for neighbor in graph[currNode]:
queue.append(neighbor)
def recursiveDepthFirstTraversal(graph, startingNode):
visited = set()
recursiveDepthFirstTraversalHelper(graph, starting, visited)
def recursiveDepthFirstTraversalHelper(graph, currNode, visited):
visited.add(currNode)
print(currNode)
for neighbor in graph[currNode]:
if neighbor not in visited:
recursiveDepthFirstTraversalHelper(graph, neighbor, visited)
"""
{ 1: {(2, WEIGHT),(3, WEIGHT),(4, WEIGHT)}}
"""
class Graph:
def __init__(self):
self.graph = {}
def __repr__(self):
return str(self.graph)
def addNode(self, value):
if value not in self.graph:
self.graph[value] = set()
def removeNode(self, value):
if value in self.graph:
self.graph.pop(value)
for otherNode in self.graph:
if value in self.graph[otherNode]:
self.graph[otherNode].remove(value)
def addEdge(self, fromNode, toNode):
self.graph[fromNode].add(toNode)
def removeEdge(self, fromNode, toNode):
self.graph[fromNode].remove(toNode)
def edgeExists(self, fromNode, toNode):
return toNode in self.graph[fromNode]
adjList = {1: {2, 3}, 2: {4, 5}, 3:{4}, 4:{1}, 5: {}}
depthFirstTraversal(adjList, 1)
```