diff --git a/graphs/bfs.py b/graphs/bfs.py new file mode 100644 index 0000000..be969ad --- /dev/null +++ b/graphs/bfs.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# author: bt3gl + +from collections import deque + + +class Graph: + + def __init__(self, edges, n): + + self.adj_list = [[] for _ in range(n)] + + for (src, dest) in edges: + self.adj_list[src].append(dest) + self.adj_list[dest].append(src) + + +def bfs(graph, v, discovered): + + q = deque() + discovered[v] = True + + q.append(v) + + while q: + + v = q.popleft() + print(v, end=' ') + + for u in graph.adj_list[v]: + if not discovered[u]: + discovered[u] = True + q.append(u) + + +def recursive_bfs(graph, q, discovered): + + if not q: + return + + v = q.popleft() + print(v, end=' ') + + for u in graph.adj_list[v]: + if not discovered[u]: + discovered[u] = True + q.append(u) + + recursive_bfs(graph, q, discovered) +