Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Shortest Path in Unweighted Graph Using BFS in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does BFS stand for and what is its main use in graphs?
BFS stands for Breadth-First Search. It is mainly used to explore nodes level by level and find the shortest path in unweighted graphs.
Click to reveal answer
beginner
Why is BFS suitable for finding the shortest path in an unweighted graph?
Because BFS explores neighbors in layers, the first time it reaches a node, it has found the shortest path to that node.
Click to reveal answer
beginner
In BFS for shortest path, what data structure is commonly used to keep track of nodes to visit next?
A queue is used to keep track of nodes to visit next, ensuring nodes are processed in the order they are discovered.
Click to reveal answer
intermediate
What additional information do we store during BFS to reconstruct the shortest path?
We store the parent or predecessor of each node, so after BFS finishes, we can trace back from the target node to the start node.
Click to reveal answer
intermediate
What is the time complexity of BFS when finding the shortest path in an unweighted graph?
The time complexity is O(V + E), where V is the number of vertices and E is the number of edges, because each node and edge is processed once.
Click to reveal answer
What data structure does BFS use to explore nodes in order?
AQueue
BStack
CPriority Queue
DHash Map
In an unweighted graph, BFS finds the shortest path because it:
AExplores nodes in increasing order of distance from the start
BExplores nodes randomly
CUses weights to calculate distance
DOnly visits each node once
Which of these is NOT needed to reconstruct the shortest path after BFS?
AParent or predecessor of each node
BNode color coding
CVisited nodes set
DDistance from start node
What is the initial step in BFS for shortest path?
AMark all nodes as visited
BAdd all nodes to the queue
CAdd the start node to the queue and mark it visited
DCalculate weights of edges
What is the time complexity of BFS in terms of vertices (V) and edges (E)?
AO(E^2)
BO(V^2)
CO(log V)
DO(V + E)
Explain how BFS finds the shortest path in an unweighted graph step-by-step.
Think about how BFS explores nodes layer by layer.
You got /5 concepts.
    Describe how to reconstruct the shortest path after BFS completes.
    Trace back from the end node to the start using parents.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does BFS (Breadth-First Search) help find in an unweighted graph?
      easy
      A. The shortest path from a start node to all other nodes
      B. The heaviest edge in the graph
      C. The longest path between two nodes
      D. The total number of edges in the graph

      Solution

      1. Step 1: Understand BFS traversal

        BFS explores nodes level by level starting from the source node.
      2. Step 2: BFS finds shortest paths in unweighted graphs

        Because BFS visits nodes in order of increasing distance, it finds shortest paths.
      3. Final Answer:

        The shortest path from a start node to all other nodes -> Option A
      4. Quick Check:

        BFS = shortest path in unweighted graph [OK]
      Hint: BFS explores neighbors level-wise to find shortest paths [OK]
      Common Mistakes:
      • Confusing BFS with DFS for shortest path
      • Thinking BFS finds longest path
      • Assuming BFS works for weighted graphs without modification
      2. Which TypeScript data structure is best to use as a queue for BFS implementation?
      easy
      A. Array with push() and pop()
      B. Array with push() and shift()
      C. Set with add() and delete()
      D. Map with set() and get()

      Solution

      1. Step 1: Identify queue operations needed for BFS

        BFS requires FIFO order: enqueue at end, dequeue from front.
      2. Step 2: Choose Array methods matching FIFO

        push() adds to end, shift() removes from front, so Array with push() and shift() works as a queue.
      3. Final Answer:

        Array with push() and shift() -> Option B
      4. Quick Check:

        Queue = push + shift [OK]
      Hint: Use push() to enqueue and shift() to dequeue in Array [OK]
      Common Mistakes:
      • Using pop() instead of shift() causes LIFO behavior
      • Using Set or Map which don't maintain order
      • Using Array methods incorrectly for queue
      3. What is the output distance array after running BFS from node 0 on this graph?
      const graph = [[1,2],[0,3],[0,3],[1,2]];
      // Nodes: 0,1,2,3
      // Edges: 0-1, 0-2, 1-3, 2-3
      
      medium
      A. [0, 1, 1, 2]
      B. [0, 2, 2, 3]
      C. [1, 0, 1, 2]
      D. [0, 1, 2, 1]

      Solution

      1. Step 1: Initialize distances and start BFS from node 0

        Distance to 0 is 0, others infinity initially.
      2. Step 2: Visit neighbors level-wise

        Neighbors of 0 are 1 and 2, set distance 1 for both. Then neighbors of 1 and 2 include 3, set distance 2 for 3.
      3. Final Answer:

        [0, 1, 1, 2] -> Option A
      4. Quick Check:

        Distances from 0 = [0,1,1,2] [OK]
      Hint: Distance increments by 1 per BFS level [OK]
      Common Mistakes:
      • Mixing up node indices and distances
      • Assigning wrong distances to neighbors
      • Confusing BFS with DFS order
      4. Identify the bug in this BFS shortest path code snippet:
      function bfs(graph: number[][], start: number) {
        const queue = [];
        const distances = Array(graph.length).fill(-1);
        distances[start] = 0;
        queue.push(start);
        while (queue.length > 0) {
          const node = queue.pop();
          for (const neighbor of graph[node]) {
            if (distances[neighbor] === -1) {
              distances[neighbor] = distances[node] + 1;
              queue.push(neighbor);
            }
          }
        }
        return distances;
      }
      medium
      A. Neighbors are not checked for visited status
      B. Distances array initialized with -1 instead of 0
      C. Start node is not added to queue
      D. Using pop() instead of shift() causes wrong BFS order

      Solution

      1. Step 1: Check queue operations in BFS

        BFS requires FIFO queue, but pop() removes from end (LIFO).
      2. Step 2: Identify impact of pop() usage

        Using pop() makes traversal DFS-like, breaking shortest path logic.
      3. Final Answer:

        Using pop() instead of shift() causes wrong BFS order -> Option D
      4. Quick Check:

        Queue must be FIFO: push + shift [OK]
      Hint: Use shift() to dequeue in BFS, not pop() [OK]
      Common Mistakes:
      • Confusing pop() with shift() for queue
      • Ignoring visited check for neighbors
      • Incorrect initialization of distances
      5. Given a graph with nodes 0 to 4 and edges [[0,1],[0,2],[1,3],[2,3],[3,4]], what is the shortest path from node 0 to node 4 using BFS?
      hard
      A. [0, 1, 2, 3, 4]
      B. [0, 2, 3, 4]
      C. [0, 1, 3, 4]
      D. [0, 4]

      Solution

      1. Step 1: Explore neighbors from node 0

        Neighbors are 1 and 2, both distance 1.
      2. Step 2: Explore neighbors of 1 and 2

        Both connect to 3 at distance 2.
      3. Step 3: From 3, move to 4 at distance 3

        Shortest path is 0 -> 1 -> 3 -> 4 or 0 -> 2 -> 3 -> 4.
      4. Step 4: Choose path found first by BFS

        BFS visits 1 before 2, so path is [0,1,3,4].
      5. Final Answer:

        [0, 1, 3, 4] -> Option C
      6. Quick Check:

        Shortest path BFS = [0,1,3,4] [OK]
      Hint: BFS finds shortest path by earliest discovered route [OK]
      Common Mistakes:
      • Assuming direct edge from 0 to 4 exists
      • Choosing longer path ignoring BFS order
      • Confusing path with distance array
      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