graph = {
'S': ['A', 'B'], 'A': ['C', 'D'], 'B': ['G','H'],
'C': ['E','F'], 'D': [],
'G': ['I'],
'H': [],
'E': ['K'],
'F': [],
'I': [],
'K': []
}
def bfs(visited, graph, node):
visited.append(node)
queue = [node]
while queue:
P = queue.pop(0)
print(P, end=" ")
for neighbour in graph[P]:
if neighbour not in visited:
visited.append(neighbour)
queue.append(neighbour)
def dfs(visited, graph, node):
if node not in visited:
print(node, end=" ")
visited.add(node)
for neighbour in graph[node]:
dfs(visited, graph, neighbour)
print("Breadth-first search:")
bfs([], graph, 'S')
print("\nDepth-first search:")
dfs(set(), graph, 'S')