

{"id":97936,"date":"2021-07-09T09:00:45","date_gmt":"2021-07-09T03:30:45","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=97936"},"modified":"2021-07-09T13:24:38","modified_gmt":"2021-07-09T07:54:38","slug":"breadth-first-search","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/","title":{"rendered":"Breadth First Search in Data Structure"},"content":{"rendered":"<p>Just like DFS, BFS (Breadth-first Search ) is also a recursive traversal algorithm for searching all vertices of the graph or tree data structure. In this article, we will learn about BFS, its implementation, and its applications.<\/p>\n<h3>Breadth First Search<\/h3>\n<p>BFS Algorithms start from the root node and explores all the neighboring nodes. In the next step, it selects the nearest node and explores it. Since graphs may contain cycles, BFS ensures each node is visited exactly once.<\/p>\n<ul>\n<li>BFS uses Queue as its backend data structure.<\/li>\n<li>Edges that lead to an unvisited node are called discovery edges while the edges that lead to an already visited node are called block edges.<\/li>\n<\/ul>\n<h3>Breadth First Search Procedure<\/h3>\n<p>BFS implementation categorizes the vertices in the graphs into two categories:<\/p>\n<ul>\n<li>Visited<\/li>\n<li>Not visited<\/li>\n<\/ul>\n<p>The major objective is to visit each node and keep marking them as \u201cvisited\u201d and ensuring that each node is visited exactly once and no cycle is formed.<\/p>\n<h3>Steps for BFS algorithm<\/h3>\n<p>1. Start by inserting the starting vertex of the graph into the rear end of the queue.<br \/>\n2. remove the item from the front of the queue and add it to the visited list<br \/>\n3. Create the adjacency list for that vertex. Add the non-visited nodes in the list at the rear end of the queue<br \/>\n4. Keep repeating steps 2 and 3 until the queue is empty<\/p>\n<h3>Breadth-First Search Algorithm<\/h3>\n<p><strong>Step 1:<\/strong> SET STATUS = 1 for each node in graph G<br \/>\n<strong>Step 2:<\/strong> Enqueue the starting node A and set STATUS = 2<br \/>\n<strong>Step 3:<\/strong> Repeat Steps 4 and 5 until the QUEUE is empty<br \/>\n<strong>Step 4:<\/strong> Dequeue a node N. Set its STATUS = 3<br \/>\n<strong>Step 5:<\/strong> Enqueue all the neighbors of N with STATUS = 1 and set their STATUS = 2<br \/>\n[END OF LOOP]<br \/>\n<strong>Step 6:<\/strong> EXIT<\/p>\n<h3>Working of Breadth First Search<\/h3>\n<p>Let us consider the graph below:<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image01.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97942\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image01.jpg\" alt=\"Breadth First Search working\" width=\"310\" height=\"292\" \/><\/a><\/p>\n<p>Starting node: A<\/p>\n<p><strong>Step 1:<\/strong> Create an adjacency list for the above graph.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image02.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97943\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image02.jpg\" alt=\"Steps of BFS\" width=\"223\" height=\"280\" \/><\/a><\/p>\n<p><strong>Step 2:<\/strong> Create an empty queue.<\/p>\n<p><strong>Step 3:<\/strong> Enqueue \u2018A\u2019 into the queue<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image03.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97944\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image03.jpg\" alt=\"Breadth First Search Working\" width=\"480\" height=\"203\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image03.jpg 480w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image03-320x135.jpg 320w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p><strong>Step 4:<\/strong> Dequeue \u2018A\u2019 and Enqueue \u2018F\u2019 and \u2018B\u2019. Mark node \u2018A\u2019 as the visited node<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image04.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97945\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image04.jpg\" alt=\"Breadth First Search Working\" width=\"698\" height=\"292\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image04.jpg 698w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image04-520x218.jpg 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image04-320x134.jpg 320w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/a><\/p>\n<p><strong>Step 5:<\/strong> Dequeue \u2018F\u2019 and Enqueue \u2018D\u2019. Mark \u2018F\u2019 as a visited node.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image05.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97946\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image05.jpg\" alt=\"BFS Algorithm\" width=\"698\" height=\"292\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image05.jpg 698w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image05-520x218.jpg 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image05-320x134.jpg 320w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/a><\/p>\n<p><strong>Step 6:<\/strong> Dequeue \u2018B\u2019 and Enqueue \u2018C\u2019. Mark \u2018B\u2019 as a visited node.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image06.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97947\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image06.jpg\" alt=\"Working of Breadth First Search \" width=\"698\" height=\"292\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image06.jpg 698w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image06-520x218.jpg 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image06-320x134.jpg 320w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/a><\/p>\n<p><strong>Step 7:<\/strong> Dequeue \u2018D\u2019 and Enqueue \u2018E\u2019. Mark \u2018D\u2019 as a visited node.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image07.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97948\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image07.jpg\" alt=\"Breadth First Search\" width=\"698\" height=\"292\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image07.jpg 698w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image07-520x218.jpg 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image07-320x134.jpg 320w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/a><\/p>\n<p><strong>Step 8:<\/strong> Dequeue \u2018C\u2019 and \u2018E\u2019. Mark \u2018C\u2019 and \u2018E\u2019 as a visited node. No new node is left.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image08.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97949\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image08.jpg\" alt=\"Breadth First Search \" width=\"628\" height=\"292\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image08.jpg 628w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image08-520x242.jpg 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-normal-image08-320x149.jpg 320w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\" \/><\/a><\/p>\n<h3>implementation of Breadth First Search in C<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#include &lt;stdio.h&gt;\r\n#include &lt;stdlib.h&gt;\r\n#define SIZE 40\r\n\r\nstruct queue \r\n{\r\n  int items[SIZE];\r\n  int front;\r\n  int rear;\r\n};\r\n\r\nstruct queue* createQueue();\r\nvoid enqueue(struct queue* q, int);\r\nint dequeue(struct queue* q);\r\nvoid display(struct queue* q);\r\nint isEmpty(struct queue* q);\r\nvoid printQueue(struct queue* q);\r\n\r\nstruct node \r\n{\r\n  int vertex;\r\n  struct node* next;\r\n};\r\n\r\nstruct node* createNode(int);\r\n\r\nstruct Graph \r\n{\r\n  int numVertices;\r\n  struct node** adjLists;\r\n  int* visited;\r\n};\r\n\r\nvoid bfs(struct Graph* graph, int startNode) \r\n{\r\n  struct queue* q = createQueue();\r\n\r\n  graph-&gt;visited[startNode] = 1;\r\n  enqueue(q, startNode);\r\n\r\n  while (!isEmpty(q)) \r\n  {\r\n    printQueue(q);\r\n    int currentNode = dequeue(q);\r\n    printf(\"Visited %d\\n\", currentNode);\r\n\r\n    struct node* temp = graph-&gt;adjLists[currentNode];\r\n\r\n    while (temp) \r\n    {\r\n      int adjVertex = temp-&gt;vertex;\r\n\r\n      if (graph-&gt;visited[adjVertex] == 0) \r\n      {\r\n        graph-&gt;visited[adjVertex] = 1;\r\n        enqueue(q, adjVertex);\r\n      }\r\n      temp = temp-&gt;next;\r\n    }\r\n  }\r\n}\r\n\r\nstruct node* createNode(int ver) \r\n{\r\n  struct node* newNode = malloc(sizeof(struct node));\r\n  newNode-&gt;vertex = ver;\r\n  newNode-&gt;next = NULL;\r\n  return newNode;\r\n}\r\n\r\nstruct Graph* createGraph(int vertices) \r\n{\r\n  struct Graph* graph = malloc(sizeof(struct Graph));\r\n  graph-&gt;numVertices = vertices;\r\n\r\n  graph-&gt;adjLists = malloc(vertices * sizeof(struct node*));\r\n  graph-&gt;visited = malloc(vertices * sizeof(int));\r\n\r\n  int i;\r\n  for (i = 0; i &lt; vertices; i++) \r\n  {\r\n    graph-&gt;adjLists[i] = NULL;\r\n    graph-&gt;visited[i] = 0;\r\n  }\r\n\r\n  return graph;\r\n}\r\n\r\nvoid addEdge(struct Graph* graph, int s_node, int d_node) \r\n{\r\n  struct node* newNode = createNode(d_node);\r\n  newNode-&gt;next = graph-&gt;adjLists[s_node];\r\n  graph-&gt;adjLists[s_node] = newNode;\r\n\r\n  newNode = createNode(s_node);\r\n  newNode-&gt;next = graph-&gt;adjLists[d_node];\r\n  graph-&gt;adjLists[d_node] = newNode;\r\n}\r\n\r\nstruct queue* createQueue() \r\n{\r\n  struct queue* q = malloc(sizeof(struct queue));\r\n  q-&gt;front = -1;\r\n  q-&gt;rear = -1;\r\n  return q;\r\n}\r\n\r\nint isEmpty(struct queue* q) \r\n{\r\n  if (q-&gt;rear == -1)\r\n    return 1;\r\n  else\r\n    return 0;\r\n}\r\n\r\nvoid enqueue(struct queue* q, int val) \r\n{\r\n  if (q-&gt;rear == SIZE - 1)\r\n    printf(\"\\nQueue is Full!!\");\r\n  else {\r\n    if (q-&gt;front == -1)\r\n      q-&gt;front = 0;\r\n    q-&gt;rear++;\r\n    q-&gt;items[q-&gt;rear] = val;\r\n  }\r\n}\r\n\r\nint dequeue(struct queue* q) \r\n{\r\n  int item;\r\n  if (isEmpty(q)) \r\n  {\r\n    printf(\"Queue is empty\");\r\n    item = -1;\r\n  } \r\n  else \r\n  {\r\n    item = q-&gt;items[q-&gt;front];\r\n    q-&gt;front++;\r\n    if (q-&gt;front &gt; q-&gt;rear) \r\n    {\r\n      q-&gt;front = q-&gt;rear = -1;\r\n    }\r\n  }\r\n  return item;\r\n}\r\n\r\nvoid printQueue(struct queue* q) \r\n{\r\n  int i = q-&gt;front;\r\n\r\n  if (isEmpty(q))\r\n  {\r\n    printf(\"Queue empty\");\r\n  } \r\n  else \r\n  {\r\n    printf(\"\\n current Queue \\n\");\r\n    for (i = q-&gt;front; i &lt; q-&gt;rear + 1; i++) \r\n    {\r\n      printf(\"%d \", q-&gt;items[i]);\r\n    }\r\n  }\r\n}\r\n\r\nint main() \r\n{\r\n  struct Graph* graph = createGraph(6);\r\n  addEdge(graph, 0, 1);\r\n  addEdge(graph, 0, 2);\r\n  addEdge(graph, 0, 3);\r\n  addEdge(graph, 1, 2);\r\n  addEdge(graph, 1, 3);\r\n  addEdge(graph, 2, 4);\r\n  addEdge(graph, 3, 4);\r\n\r\n  bfs(graph, 0);\r\n\r\n  return 0;\r\n}\r\n<\/pre>\n<h3>BFS implementation in C++<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#include &lt;iostream&gt;\r\n#include &lt;list&gt;\r\nusing namespace std;\r\n\r\nclass BFSGraph \r\n{\r\n  int numVertices;\r\n  list&lt;int&gt;* adjLists;\r\n  bool* visited;\r\n\r\n   public:\r\n  BFSGraph(int vertices);\r\n  void addEdge(int src, int dest);\r\n  void BFS(int startVertex);\r\n};\r\n\r\nBFSGraph::BFSGraph(int vertices) \r\n{\r\n  numVertices = vertices;\r\n  adjLists = new list&lt;int&gt;[vertices];\r\n}\r\n\r\nvoid BFSGraph::addEdge(int s_node, int d_node) \r\n{\r\n  adjLists[s_node].push_back(d_node);\r\n  adjLists[d_node].push_back(s_node);\r\n}\r\n\r\nvoid BFSGraph::BFS(int startVertex) \r\n{\r\n  visited = new bool[numVertices];\r\n  for (int i = 0; i &lt; numVertices; i++)\r\n    visited[i] = false;\r\n\r\n  list&lt;int&gt; queue;\r\n\r\n  visited[startVertex] = true;\r\n  queue.push_back(startVertex);\r\n\r\n  list&lt;int&gt;::iterator i;\r\n\r\n  while (!queue.empty())\r\n  {\r\n    int currentVertex = queue.front();\r\n    cout &lt;&lt; \"Visited \" &lt;&lt; currentVertex &lt;&lt; \"\\n\";\r\n    queue.pop_front();\r\n\r\n    for (i = adjLists[currentVertex].begin(); i != adjLists[currentVertex].end(); ++i) \r\n    {\r\n      int adjVertex = *i;\r\n      if (!visited[adjVertex]) \r\n      {\r\n        visited[adjVertex] = true;\r\n        queue.push_back(adjVertex);\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nint main() \r\n{\r\n  BFSGraph g(4);\r\n  g.addEdge(0, 1);\r\n  g.addEdge(0, 2);\r\n  g.addEdge(0, 3);\r\n  g.addEdge(2, 0);\r\n  g.addEdge(2, 1);\r\n  g.addEdge(3, 3);\r\n  g.addEdge(3, 1);\r\n\r\n  g.BFS(2);\r\n\r\n  return 0;\r\n}\r\n<\/pre>\n<h3>Implementation of BFS in JAVA<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import java.util.*;\r\n\r\npublic class BFSGraph \r\n{\r\n  private int V;\r\n  private LinkedList&lt;Integer&gt; adj[];\r\n\r\n  BFSGraph(int v) \r\n  {\r\n    V = v;\r\n    adj = new LinkedList[v];\r\n    for (int i = 0; i &lt; v; ++i)\r\n      adj[i] = new LinkedList();\r\n  }\r\n\r\n  void addEdge(int v, int w) \r\n  {\r\n    adj[v].add(w);\r\n  }\r\n\r\n  void BFS(int s) \r\n  {\r\n\r\n    boolean visited[] = new boolean[V];\r\n\r\n    LinkedList&lt;Integer&gt; queue = new LinkedList();\r\n\r\n    visited[s] = true;\r\n    queue.add(s);\r\n\r\n    while (queue.size() != 0) \r\n    {\r\n      s = queue.poll();\r\n      System.out.print(s + \" \");\r\n\r\n      Iterator&lt;Integer&gt; i = adj[s].listIterator();\r\n      while (i.hasNext()) \r\n      {\r\n        int n = i.next();\r\n        if (!visited[n]) \r\n        {\r\n          visited[n] = true;\r\n          queue.add(n);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  public static void main(String args[]) \r\n  {\r\n    BFSGraph g = new BFSGraph(4);\r\n\r\n    g.addEdge(0, 1);\r\n    g.addEdge(0, 2);\r\n    g.addEdge(0, 3);\r\n    g.addEdge(2, 1);\r\n    g.addEdge(2, 3);\r\n    g.addEdge(3, 3);\r\n    g.addEdge(3, 0);\r\n\r\n    System.out.println(\"Breadth First Traversal \");\r\n\r\n    g.BFS(2);\r\n  }\r\n}\r\n<\/pre>\n<h3>BFS implementation in python<\/h3>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import collections\r\n\r\ndef bfs(graph, root):\r\n\r\n    visited, queue = set(), collections.deque([root])\r\n    visited.add(root)\r\n\r\n    while queue:\r\n\r\n        ver = queue.popleft()\r\n        print(str(ver) + \" \", end=\"\")\r\n\r\n        for near in graph[ver]:\r\n            if near not in visited:\r\n                visited.add(near)\r\n                queue.append(near)\r\n\r\n\r\nif __name__ == '__main__':\r\n    graph = {0: [1, 2], 1: [2,0], 2: [3], 3: [1, 2]}\r\n    print(\"Breadth First Traversal: \")\r\n    bfs(graph, 1)\r\n<\/pre>\n<h3>Complexity of Breadth-First Search<\/h3>\n<p>The time complexity of DFS is represented in the form O(V+E) where V is the number of vertices and E is the number of edges.<\/p>\n<p>The space complexity of DFS algorithms is O(V).<\/p>\n<h3>Applications of BFS<\/h3>\n<p>BFS Algorithm is used in<\/p>\n<p>1. Pathfinding algorithms<br \/>\n2. GPS Navigation<br \/>\n3. Minimum spanning trees<br \/>\n4. Building index by search index<br \/>\n5. Ford Fulkerson algorithm. Finds maximum flow in a network<br \/>\n6. Detection of a cycle in an undirected graph<\/p>\n<h3>Conclusion<\/h3>\n<p>With this article, the graph data structure is complete. We now have a complete understanding of the Graphs in Data structures and their different representation in form of an adjacency list and an adjacency matrix.<\/p>\n<p>In other articles, we have seen traversal algorithms for finding a node in the graph or tree and its implementation in different programming languages. In future articles, we will learn about the tree data structures and everything related to them.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Just like DFS, BFS (Breadth-first Search ) is also a recursive traversal algorithm for searching all vertices of the graph or tree data structure. In this article, we will learn about BFS, its implementation,&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":98171,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24020],"tags":[24717,24718,24715,24716,24714],"class_list":["post-97936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-structure-tutorials","tag-bfs-algorithm","tag-bfs-implementation","tag-bfs-in-data-structure","tag-bfs-working","tag-breadth-first-search"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Breadth First Search in Data Structure - DataFlair<\/title>\n<meta name=\"description\" content=\"Learn what is breadth first search in data structure. Learn its implementation, algorithm, working and applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/breadth-first-search\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Breadth First Search in Data Structure - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Learn what is breadth first search in data structure. Learn its implementation, algorithm, working and applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/breadth-first-search\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-09T03:30:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-07-09T07:54:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Breadth First Search in Data Structure - DataFlair","description":"Learn what is breadth first search in data structure. Learn its implementation, algorithm, working and applications.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/","og_locale":"en_US","og_type":"article","og_title":"Breadth First Search in Data Structure - DataFlair","og_description":"Learn what is breadth first search in data structure. Learn its implementation, algorithm, working and applications.","og_url":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2021-07-09T03:30:45+00:00","article_modified_time":"2021-07-09T07:54:38+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-1.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/b49855299264df5e27e3ec6c2cd9fde9"},"headline":"Breadth First Search in Data Structure","datePublished":"2021-07-09T03:30:45+00:00","dateModified":"2021-07-09T07:54:38+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/"},"wordCount":560,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-1.jpg","keywords":["BFS Algorithm","BFS Implementation","BFS in data structure","BFS Working","Breadth First Search"],"articleSection":["Data Structure Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/breadth-first-search\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/","url":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/","name":"Breadth First Search in Data Structure - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-1.jpg","datePublished":"2021-07-09T03:30:45+00:00","dateModified":"2021-07-09T07:54:38+00:00","description":"Learn what is breadth first search in data structure. Learn its implementation, algorithm, working and applications.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/breadth-first-search\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-1.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Breadth-First-Search-in-DS-1.jpg","width":1200,"height":628,"caption":"Breadth First Search in DS"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/breadth-first-search\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Data Structure Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/data-structure-tutorials\/"},{"@type":"ListItem","position":3,"name":"Breadth First Search in Data Structure"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/b49855299264df5e27e3ec6c2cd9fde9","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team is a group of passionate educators and industry experts dedicated to providing high-quality online learning resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With years of experience in the field, the team aims to simplify complex topics and help learners advance their careers. At DataFlair, we believe in empowering students and professionals with the knowledge and skills needed to thrive in today\u2019s fast-paced tech industry. Follow us for Free courses, expert insights, tutorials, and practical tips to boost your learning journey.","url":"https:\/\/data-flair.training\/blogs\/author\/datafbdad\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/97936","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=97936"}],"version-history":[{"count":2,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/97936\/revisions"}],"predecessor-version":[{"id":97950,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/97936\/revisions\/97950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/98171"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=97936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=97936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=97936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}