class Graph: def __init__(self): self.graph = {} def add_edge(self, u, v): if u not in self.graph: self.graph[u] = [] self.graph[u].append(v) def get_neighbors(self, u): return self.graph.get(u, []) def dfs(graph, start, visited=None): if visited is None: visited = set() visited.add(start) print(start, end=' ') for neighbor in graph.get_neighbors(start): if neighbor not in visited: dfs(graph, neighbor, visited) from collections import deque def bfs(graph, start): visited = set() queue = deque([start]) visited.add(start) while queue: node = queue.popleft() print(node, end=' ') for neighbor in graph.get_neighbors(node): if neighbor not in visited: visited.add(neighbor) queue.append(neighbor) # Example usage g = Graph() g.add_edge(1, 2) g.add_edge(1, 3) g.add_edge(2, 4) g.add_edge(2, 5) g.add_edge(3, 6) g.add_edge(3, 7) print("DFS Traversal:") dfs(g, 1) # Start from node 1 print("\nBFS Traversal:") bfs(g, 1) # Start from node 1