Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have a BFS Code and the output I\'m getting is: 1 2 5 6 7 3 8 4 The expected O

ID: 3862898 • Letter: I

Question

I have a BFS Code and the output I'm getting is: 1   2   5   6   7   3   8   4   

The expected Output is: 1 2 6 8 3 4 5 7

With the input

How should I modify my code to achieve the expected output?

import java.util.InputMismatchException;

    import java.util.LinkedList;

    import java.util.Queue;

    import java.util.Scanner;

    public class BFS

    {

        private Queue queue;

        public BFS()

        {

            queue = new LinkedList();

        }

        public void bfs(int adjacency_matrix[][], int source)

        {

            int number_of_nodes = adjacency_matrix[source].length - 1;

            int[] visited = new int[number_of_nodes + 1];

            int i, element;

            visited[source] = 1;

            queue.add(source);

            while (!queue.isEmpty())

            {

                element = (int) queue.remove();

                i = 1;

                System.out.print(element+ " ");

                while (i <= number_of_nodes)

                {

                    if (adjacency_matrix[element][i] == 1 && visited[i] == 0)

                    {

                        queue.add(i);

                        visited[i] = 1;

                    }

                    i++;

                }

            }

        }

        public static void main(String... arg)

        {

            int number_no_nodes, source;

            Scanner scanner = null;

            try

            {

                System.out.println("Enter the number of nodes in the graph");

                scanner = new Scanner(System.in);

                number_no_nodes = scanner.nextInt();

                int adjacency_matrix[][] = new int[number_no_nodes + 1][number_no_nodes + 1];

                System.out.println("Enter the adjacency matrix");

                for (int i = 1; i <= number_no_nodes; i++)

                    for (int j = 1; j <= number_no_nodes; j++)

                        adjacency_matrix[i][j] = scanner.nextInt();

                System.out.println("Enter the source for the graph");

                source = scanner.nextInt();

                System.out.println("The BFS traversal of the graph is ");

                BFS bfs = new BFS();

                bfs.bfs(adjacency_matrix, source);

            } catch (InputMismatchException inputMismatch)

            {

                System.out.println("Wrong Input Format");

            }

            scanner.close();

        }

    }

Explanation / Answer

            Class main{ public void BFS()             {                                                 Q1 q1 = new LinkedList();                         q1.add(this.rootNode);                         printNode(this.rootNode);                         rootNode.visited = true;                         while(!q1.isEmpty()) {                                     Node node = (Node)q1.remove();                                     Node child=null;                                     while((child=getUnvisitedChildNode(node))!=null) {                                                 child.visited=true;                                                 printNode(child);                                                 q1.add(child);                                     }                         }                                                 clearNodes();             }             public void dfs() {                                                 Stack stack = new Stack();                         stack.push(this.rootNode);                         rootNode.visited=true;                         printNode(rootNode);                         while(!stack.isEmpty()) {                                     Node node = (Node)s.peek();                                     Node child = getUnvisitedChildNode(n);                                     if(child != null) {                                                 child.visited = true;                                                 printNode(child);                                                 s.push(child);                                     }                                     else {                                                 s.pop();                                     }                         }                                                 clearNodes();             } } Class Node {    Char data;    Public Node(char c) {       this.data=c;    } }