Bird
Raised Fist0
DSA C++programming~5 mins

BFS Breadth First Search on Graph in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does BFS stand for in graph traversal?
BFS stands for Breadth First Search, a method to explore all nodes of a graph layer by layer.
Click to reveal answer
beginner
In BFS, which data structure is primarily used to keep track of nodes to visit next?
A queue is used in BFS to keep track of nodes to visit in the order they were discovered.
Click to reveal answer
intermediate
What is the main difference between BFS and DFS in graph traversal?
BFS explores neighbors level by level using a queue, while DFS explores as far as possible along a branch using a stack or recursion.
Click to reveal answer
beginner
Why do we mark nodes as visited in BFS?
Marking nodes as visited prevents revisiting the same node multiple times, avoiding infinite loops and repeated work.
Click to reveal answer
intermediate
What is the time complexity of BFS on a graph with V vertices and E edges?
The time complexity of BFS is O(V + E), since it visits every vertex and edge once.
Click to reveal answer
Which data structure does BFS use to store nodes to visit next?
AQueue
BStack
CPriority Queue
DHash Map
What is the first step in BFS traversal starting from a node?
APush the starting node into a stack
BMark the starting node as visited and enqueue it
CVisit all neighbors immediately
DPop a node from the queue
What happens if you do not mark nodes as visited in BFS?
ANodes may be visited multiple times causing infinite loops
BThe graph becomes disconnected
CThe algorithm runs faster
DThe queue becomes empty immediately
Which of these is NOT true about BFS?
AIt explores nodes level by level
BIt uses a queue
CIt always finds the shortest path in an unweighted graph
DIt uses recursion
What is the output of BFS on a graph starting from node 1 with edges: 1-2, 1-3, 2-4?
A1 -> 3 -> 2 -> 4
B4 -> 2 -> 3 -> 1
C1 -> 2 -> 3 -> 4
D2 -> 1 -> 3 -> 4
Explain how BFS works on a graph starting from a given node.
Think about how you explore friends in layers starting from one person.
You got /4 concepts.
    Describe the differences between BFS and DFS in simple terms.
    Imagine BFS as exploring neighbors floor by floor, DFS as going deep down one path.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does BFS (Breadth First Search) primarily use to keep track of nodes to visit next in a graph?
      easy
      A. A queue data structure
      B. A stack data structure
      C. A priority queue
      D. A hash map

      Solution

      1. Step 1: Understand BFS traversal method

        BFS explores nodes level by level, visiting all neighbors before moving deeper.
      2. Step 2: Identify the data structure used

        To maintain the order of visiting nodes level-wise, BFS uses a queue which follows FIFO (First In First Out).
      3. Final Answer:

        A queue data structure -> Option A
      4. Quick Check:

        BFS uses queue = B [OK]
      Hint: BFS uses FIFO order, so it needs a queue [OK]
      Common Mistakes:
      • Confusing BFS with DFS which uses a stack
      • Thinking BFS uses a priority queue
      • Assuming BFS uses a hash map for order
      2. Which of the following is the correct way to declare a queue for BFS traversal of integers in C++?
      easy
      A. vector<int> q;
      B. queue<int> q;
      C. stack<int> q;
      D. list<int> q;

      Solution

      1. Step 1: Identify the correct STL container for queue

        In C++, the standard queue container is declared as queue<type>.
      2. Step 2: Match the declaration for integer queue

        queue<int> q; correctly declares a queue of integers.
      3. Final Answer:

        queue<int> q; -> Option B
      4. Quick Check:

        Correct queue syntax = queue<int> q; [OK]
      Hint: Use queue<int> for BFS integer queue in C++ [OK]
      Common Mistakes:
      • Using stack instead of queue
      • Using vector or list which are not queues
      • Missing template angle brackets
      3. Consider the following graph represented as adjacency list:
      0: 1, 2
      1: 0, 3
      2: 0, 3
      3: 1, 2
      If BFS starts from node 0, what is the order of nodes visited?
      medium
      A. [0, 1, 3, 2]
      B. [0, 2, 1, 3]
      C. [0, 3, 1, 2]
      D. [0, 1, 2, 3]

      Solution

      1. Step 1: Start BFS from node 0

        Visit node 0 first, enqueue neighbors 1 and 2.
      2. Step 2: Visit neighbors in queue order

        Dequeue 1, enqueue its neighbor 3 (0 already visited). Then dequeue 2, enqueue 3 but already visited.
      3. Step 3: Visit node 3

        Finally dequeue 3.
      4. Final Answer:

        [0, 1, 2, 3] -> Option D
      5. Quick Check:

        BFS order = [0, 1, 2, 3] [OK]
      Hint: Visit neighbors in queue order, avoid revisits [OK]
      Common Mistakes:
      • Visiting neighbors in wrong order
      • Revisiting nodes already visited
      • Confusing BFS with DFS order
      4. The following BFS code snippet has a bug. What is the error?
      void bfs(int start, vector& adj) {
        vector<bool> visited(adj.size(), false);
        queue<int> q;
        q.push(start);
        while (!q.empty()) {
          int node = q.front();
          q.pop();
          cout << node << " ";
          for (int neighbor : adj[node]) {
            if (!visited[neighbor]) {
              q.push(neighbor);
            }
          }
        }
      }
      medium
      A. Neighbors are not iterated correctly
      B. Queue is not initialized properly
      C. Visited array is never updated to true for visited nodes
      D. Start node is not pushed into the queue

      Solution

      1. Step 1: Check visited array usage

        Visited array is created but nodes are never marked visited after visiting.
      2. Step 2: Understand impact on BFS

        Without marking visited true, nodes can be enqueued multiple times causing infinite loops or repeated visits.
      3. Final Answer:

        Visited array is never updated to true for visited nodes -> Option C
      4. Quick Check:

        Must mark visited[node] = true after popping [OK]
      Hint: Always mark nodes visited after dequeuing [OK]
      Common Mistakes:
      • Forgetting to mark visited nodes
      • Pushing start node multiple times
      • Incorrect loop conditions
      5. Given a graph with nodes 0 to 4 and edges: 0-1, 0-2, 1-3, 2-3, 3-4. Using BFS starting from node 0, which node is visited at the 3rd position in the BFS order?
      hard
      A. 2
      B. 4
      C. 1
      D. 3

      Solution

      1. Step 1: List neighbors and BFS order

        Start at 0, enqueue neighbors 1 and 2. BFS order so far: [0]
      2. Step 2: Visit nodes in queue order

        Dequeue 1 (2nd visited), enqueue 3. Dequeue 2 (3rd visited), enqueue 3 but already enqueued.
      3. Step 3: Confirm 3rd visited node

        The third node visited is 2.
      4. Final Answer:

        2 -> Option A
      5. Quick Check:

        Third visited node = 2 [OK]
      Hint: Track queue order carefully to find nth visited node [OK]
      Common Mistakes:
      • Mixing order of neighbors
      • Counting start node incorrectly
      • Ignoring repeated nodes in queue
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard