Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Minimum Spanning Tree Kruskal's Algorithm in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Minimum Spanning Tree (MST)?
A Minimum Spanning Tree is a subset of edges in a connected, weighted graph that connects all vertices together without any cycles and with the minimum possible total edge weight.
Click to reveal answer
beginner
What is the main idea behind Kruskal's Algorithm?
Kruskal's Algorithm builds the MST by sorting all edges by weight and adding the smallest edge to the MST if it doesn't create a cycle, repeating until all vertices are connected.
Click to reveal answer
intermediate
Why do we use a Union-Find (Disjoint Set) data structure in Kruskal's Algorithm?
Union-Find helps efficiently check if adding an edge creates a cycle by tracking which vertices are in the same connected component, allowing quick union and find operations.
Click to reveal answer
intermediate
What is the time complexity of Kruskal's Algorithm?
The time complexity is O(E log E) mainly due to sorting edges, where E is the number of edges. Union-Find operations are almost constant time.
Click to reveal answer
intermediate
What happens if the graph is not connected when running Kruskal's Algorithm?
Kruskal's Algorithm will find a Minimum Spanning Forest, which is a set of MSTs for each connected component, since it cannot connect all vertices in a disconnected graph.
Click to reveal answer
What is the first step in Kruskal's Algorithm?
ASort all edges by their weight
BPick a random vertex
CCreate adjacency list
DRemove all cycles
How does Kruskal's Algorithm avoid cycles when adding edges?
ABy only adding edges connected to the first vertex
BBy checking if the edge connects two different sets using Union-Find
CBy removing edges randomly
DBy sorting vertices
What data structure is commonly used to efficiently implement Kruskal's Algorithm?
AStack
BQueue
CUnion-Find (Disjoint Set)
DBinary Search Tree
If a graph has 5 vertices and 7 edges, what is the maximum number of edges in its MST?
A4
B5
C7
D6
What will Kruskal's Algorithm return if the graph is disconnected?
AAll edges
BMinimum Spanning Tree
CNo edges
DMinimum Spanning Forest
Explain step-by-step how Kruskal's Algorithm builds a Minimum Spanning Tree.
Think about sorting edges and using Union-Find to avoid cycles.
You got /5 concepts.
    Describe how the Union-Find data structure helps in Kruskal's Algorithm.
    Focus on cycle detection and merging sets.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main goal of Kruskal's Algorithm in graph theory?
      easy
      A. To find the minimum spanning tree of a graph
      B. To find the shortest path between two nodes
      C. To detect cycles in a graph
      D. To sort the vertices of a graph

      Solution

      1. Step 1: Understand Kruskal's Algorithm purpose

        Kruskal's Algorithm is designed to find a subset of edges that connects all vertices with the minimum total edge weight and no cycles.
      2. Step 2: Compare with other graph problems

        Shortest path and cycle detection are different problems solved by other algorithms like Dijkstra or DFS, not Kruskal's.
      3. Final Answer:

        To find the minimum spanning tree of a graph -> Option A
      4. Quick Check:

        Minimum Spanning Tree = Kruskal's Algorithm goal [OK]
      Hint: Kruskal connects all nodes with least total edge weight [OK]
      Common Mistakes:
      • Confusing MST with shortest path
      • Thinking Kruskal detects cycles only
      • Assuming it sorts vertices
      2. Which of the following is the correct way to sort edges by weight in JavaScript for Kruskal's Algorithm?
      easy
      A. edges.sort((a, b) => a.weight * b.weight);
      B. edges.sort((a, b) => b.weight - a.weight);
      C. edges.sort((a, b) => a.weight + b.weight);
      D. edges.sort((a, b) => a.weight - b.weight);

      Solution

      1. Step 1: Understand sorting for MST

        Kruskal's Algorithm requires edges sorted in ascending order by weight to pick smallest edges first.
      2. Step 2: Check JavaScript sort syntax

        Using edges.sort((a, b) => a.weight - b.weight); sorts edges from smallest to largest weight correctly.
      3. Final Answer:

        edges.sort((a, b) => a.weight - b.weight); -> Option D
      4. Quick Check:

        Sort ascending by weight = edges.sort((a, b) => a.weight - b.weight); [OK]
      Hint: Sort edges ascending by weight using (a,b) => a.weight - b.weight [OK]
      Common Mistakes:
      • Sorting descending instead of ascending
      • Using addition or multiplication in sort callback
      • Not returning a number in sort function
      3. Consider the following edges of a graph:
      const edges = [ {from: 'A', to: 'B', weight: 1}, {from: 'B', to: 'C', weight: 4}, {from: 'A', to: 'C', weight: 3}, {from: 'C', to: 'D', weight: 2} ];
      After applying Kruskal's Algorithm, which edges will be included in the MST?
      medium
      A. [{A-B,1}, {A-C,3}, {B-C,4}]
      B. [{A-B,1}, {C-D,2}, {A-C,3}]
      C. [{A-B,1}, {C-D,2}, {B-C,4}]
      D. [{B-C,4}, {A-C,3}, {C-D,2}]

      Solution

      1. Step 1: Sort edges by weight ascending

        Sorted edges: (A-B,1), (C-D,2), (A-C,3), (B-C,4)
      2. Step 2: Pick edges without forming cycles

        Pick A-B (1), then C-D (2), then A-C (3). Adding B-C (4) would form a cycle, so skip it.
      3. Final Answer:

        [{A-B,1}, {C-D,2}, {A-C,3}] -> Option B
      4. Quick Check:

        Edges with smallest weights and no cycles = [{A-B,1}, {C-D,2}, {A-C,3}] [OK]
      Hint: Pick edges ascending weight, skip if cycle forms [OK]
      Common Mistakes:
      • Including edges that form cycles
      • Not sorting edges before selection
      • Choosing heavier edges unnecessarily
      4. The following code snippet tries to implement Kruskal's Algorithm but has a bug:
      const edges = [
        {from: 'A', to: 'B', weight: 1},
        {from: 'B', to: 'C', weight: 2},
        {from: 'A', to: 'C', weight: 3}
      ];
      
      edges.sort((a, b) => a.weight - b.weight);
      
      const mst = [];
      const visited = new Set();
      
      for (const edge of edges) {
        if (!visited.has(edge.from) || !visited.has(edge.to)) {
          mst.push(edge);
          visited.add(edge.from);
          visited.add(edge.to);
        }
      }
      console.log(mst);

      What is the main issue with this code?
      medium
      A. It does not correctly check for cycles, so MST may be incorrect
      B. The edges are not sorted properly
      C. The visited set is not initialized
      D. It uses an array instead of a linked list for MST

      Solution

      1. Step 1: Analyze cycle detection logic

        The code uses a visited set to check if nodes are visited, but this does not detect cycles correctly in Kruskal's Algorithm.
      2. Step 2: Understand correct cycle detection

        Kruskal's requires a Union-Find or Disjoint Set data structure to detect cycles properly, not just visited nodes.
      3. Final Answer:

        It does not correctly check for cycles, so MST may be incorrect -> Option A
      4. Quick Check:

        Cycle detection needs Union-Find, not visited set [OK]
      Hint: Use Union-Find to detect cycles, not visited nodes [OK]
      Common Mistakes:
      • Using visited set for cycle detection
      • Ignoring cycle checks
      • Assuming sorting fixes all issues
      5. You have a graph with vertices ['A', 'B', 'C', 'D', 'E'] and edges:
      const edges = [
        {from: 'A', to: 'B', weight: 1},
        {from: 'B', to: 'C', weight: 3},
        {from: 'A', to: 'C', weight: 2},
        {from: 'C', to: 'D', weight: 4},
        {from: 'D', to: 'E', weight: 5},
        {from: 'B', to: 'E', weight: 6}
      ];

      Using Kruskal's Algorithm with a Union-Find structure, what is the total weight of the minimum spanning tree?
      hard
      A. 10
      B. 15
      C. 12
      D. 16

      Solution

      1. Step 1: Sort edges by weight ascending

        Sorted edges: (A-B,1), (A-C,2), (B-C,3), (C-D,4), (D-E,5), (B-E,6)
      2. Step 2: Pick edges without cycles using Union-Find

        Pick A-B(1), A-C(2), B-C(3) forms cycle, skip B-C. Pick C-D(4), D-E(5). Total weight = 1+2+4+5 = 12.
      3. Final Answer:

        12 -> Option C
      4. Quick Check:

        Sum of MST edges = 12 [OK]
      Hint: Sum smallest edges without cycles using Union-Find [OK]
      Common Mistakes:
      • Including edges that form cycles
      • Adding all edges without checking
      • Misordering edges before selection
      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