Breadth First Search Algorithm In Javascript | letsbug

BFS Recursion in Javascript

 

    In this article we are looking at how we can implement the Breadth First Search in Javascript with recursion. We are not going to waste time so let's just start.

Breadth First Search In Javascript

    In the below code first we have declared a graph. And this representation of graph is called adjacency matrix. We have represented the nodes with the key in the graph and connection to other nodes is represented with the value array of the graph object.

    Then we have the traverse arrow function which takes in two parameter one is the graph object itself and a starting node. And the function start with creating a visited empty object and a array called queue with the connection of the first node of graph.

    And then we initialize the visited object with the first node of the and set it to true. So that we know that we have visited it and do not fall into a infinite cycle. 

    We then have a helper function inside of our main function. Which will do the recursion for us. It takes in only one parameter the node. This function if until the length of the queue is empty. Which means that there is not node to visit.

    While there is some element in the queue to visit. We visit the node and then remove it from the queue cause we now have visited it. We also print the value of that node. And check its connections or neighbor. And if it has a neighbor which is not visited by us. Then we put that neighbor to the queue to visit them later. And we again call the bfsRecursion helper function to traverse that particular neighbor.

    Then we come out of the helper function and call the helper function with first node.

    This was how I have implemented it. There are many way you can implement Breadth First Search in many different languages.

code:

const graph = {
    'A': ['B', 'C'],
    'B': ['D', 'E'],
    'C': ['F'],
    'D': [],
    'E': ['F'],
    'F': []
}

//bfs traversal in graph using recursion
const traverse = (graph, start) => {
    const visited = {};
    const queue = [start];
    visited[start] = true;
    const bfsRecursion = (node) => {
        if (queue.length) {
            const node = queue.shift();
            console.log(node);
            for (let neighbor of graph[node]) {
                if (!visited[neighbor]) {
                    visited[neighbor] = true;
                    queue.push(neighbor);
                    bfsRecursion(neighbor);
                }
            }
        }
    }
    bfsRecursion(start);
}
traverse(graph, 'A'); //A B C D E f

Thank you

Comments

Categories

Big Data Analytics Binary Search Binary Search Tree Binary To Decimal binary tree Breadth First Search Bubble sort C Programming c++ Chemical Reaction and equation class 10 class 10th Class 9 Climate Complex Numbers computer network counting sort CSS Cyber Offenses Cyber Security Cyberstalking Data Science Data Structures Decimal To Binary Development diamond pattern Digital Marketing dust of snow Economics Economics Lesson 4 Email Validation English fire and ice Food Security in India Footprints Without feet Forest And Wildlife Resources game Geography Geography lesson 6 glassmorphism Glossary Graph HackerRank Solution hindi HTML image previewer India-Size And Location Insertion Sort Internet Network Status Interview Questions Introduction to cyber crime and cyber security IT javascript tricks json to CSV converter lesson 2 lesson 1 lesson 2 Lesson 3 Lesson 6 lesson 7 Life lines of National Economy life processes Linear Search Linked List lowest common ancestor Machine Learning MCQs median in array Merge sort min and max of two numbers Moment Money and Credit My Childhood Natural Vegetation and Wildlife NCERT Network connectivity devices Network Models Network Security No Men Are foreign Node.js operator overloading P5.js PHP Physical features of India Population Prime Numbers python Quick sort R language Rain on the roof Regular Expression Resources and development reversing array saakhi science Searching Algorithm Selection sort Social Media Marketing social science Software Engineering Software Testing Sorting Algorithm Stacks staircase pattern System Concepts Text Recognition The last Leaf time converter Time Passed From A Date Todo List App Tree Trending Technologies Understanding Economic Development username and password video player Visualization water resources Wired And Wireless LAN साखी
Show more

Popular Posts

Big Data MCQs(multiple choice questions) with answers - letsbug

Digital Marketing MCQ(Multiple Choice Questions) with Answers | part 1 | letsbug

Software Engineering MCQs questions with answers - letsbug