Expert Answer General Guidance The answer provided below has been developed in a clear step by step manner.Step: 1 To print DFS of a graph: Code in JAVA: import java.io.*; import java.util.*; class Graph { private int V; // No. of vertices private LinkedList adj[]; //Adjacency Lists // Constructor Graph(int v) { V = v; adj = new LinkedList[v]; for (int i = 0; i < v; ++i) adj[i] = new LinkedList(); } // Function to add an edge into the graph void addEdge(int u, int v) { adj[u].add(v); } // A function used by DFS void calc(int v, boolean vis[]) { // Mark the current node as visited and print it vis[v] = true; System.out.print(v + " "); // Recur for all the vertices adjacent to this vertex Iterator i = adj[v].listIterator(); while (i.hasNext()) { int n = i.next(); if (!vis[n]) calc(n, vis); } } void DFS(int v) { // Mark all the vertices as not visited(set as false by default in java) boolean vis[] = new boolean[V]; // Call the recursive function to print DFS traversal. calc(v, vis); } public static void main(String args[]) { Graph g = new Graph(8); g.addEdge(0, 1); g.addEdge(3, 2); g.addEdge(5, 2); g.addEdge(3, 5); g.addEdge(3, 4); g.addEdge(4, 6); g.addEdge(6, 3); g.addEdge(6, 7); g.addEdge(7, 1); System.out.print("DFS traversal from vertex 3 is: "); g.DFS(3); } } Input: Vertex a = 0 Vertex b = 1 Vertex c = 2 Vertex d = 3 Vertex e = 4 Vertex f = 5 Vertex g = 6 Vertex h = 7 Output: DFS traversal from vertex 3 is: 3 2 5 4 6 7 1 DFS is d c f e g h a Time complexity: O(V + E) Auxiliary Space: O(V) Explanation:Please refer to solution in this step.Step: 2 To print BFS of a graph: Code in JAVA: import java.io.*; import java.util.*; class Graph { private int V; // No. of vertices private LinkedList adj[]; //Adjacency Lists // Constructor Graph(int v) { V = v; adj = new LinkedList[v]; for (int i=0; i adj[i] = new LinkedList(); } // Function to add an edge into the graph void addEdge(int u,int v) { adj[u].add(v); } // prints BFS traversal from a given source s void BFS(int s) { // Mark all the vertices as not visited(By default set as false) boolean vis[] = new boolean[V]; // Create a queue for BFS LinkedList q = new LinkedList(); // Mark the current node as visited and enqueue it vis[s]=true; q.add(s); while (q.size() != 0) { // Dequeue a vertex from queue and print it s = q.poll(); System.out.print(s+" "); // Get all adjacent vertices of the dequeued vertex s if a adjacent has not been visited, then mark it visited and enqueue it Iterator i = adj[s].listIterator(); while (i.hasNext()) { int n = i.next(); if (!vis[n]) { vis[n] = true; q.add(n); } } } } public static void main(String args[]) { Graph g = new Graph(8); g.addEdge(0, 1); g.addEdge(3, 2); g.addEdge(5, 2); g.addEdge(3, 5); g.addEdge(3, 4); g.addEdge(4, 6); g.addEdge(6, 3); g.addEdge(6, 7); g.addEdge(7, 1); System.out.print("BFS traversal from vertex 0 is: "); g.BFS(0); } } Input: Vertex a = 0 Vertex b = 1 Vertex c = 2 Vertex d = 3 Vertex e = 4 Vertex f = 5 Vertex g = 6 Vertex h = 7 Output: BFS traversal from vertex 0 is: 0 1 BFS is a b Time Complexity: O(V+E) Auxiliary Space: O(V) Explanation: The above code is for printing bfs(breadth first search) of a graph. Answer: I have added code for both DFS and BFS of a graph. You can directly copy and paste the code in any JAVA compiler. DFS is d c f e g h a (from node d) BFS is a b (from node a) Time complexity: O(V + E), where V is the number of vertices and E is the number of edges in the graph. Auxiliary Space: O(V)
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter