Bird
Raised Fist0
DSA Goprogramming~5 mins

Minimum Spanning Tree Kruskal's Algorithm in DSA Go - 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
beginner
In Kruskal's Algorithm, what happens if adding an edge creates a cycle?
If adding an edge creates a cycle, the edge is skipped and not added to the MST to keep the tree acyclic.
Click to reveal answer
What is the first step in Kruskal's Algorithm?
ARemove all cycles from the graph
BPick any vertex as the starting point
CAdd all edges to the MST
DSort all edges by their weight
Which data structure is commonly used to detect cycles in Kruskal's Algorithm?
AUnion-Find (Disjoint Set)
BStack
CQueue
DBinary Search Tree
What does Kruskal's Algorithm guarantee about the resulting spanning tree?
AIt connects all vertices with minimum total edge weight
BIt contains all edges of the graph
CIt has the maximum total edge weight
DIt is always a binary tree
If an edge connects two vertices already in the same set, what should Kruskal's Algorithm do?
AAdd the edge to MST
BSkip the edge to avoid cycle
CRemove one vertex
DRestart the algorithm
What is the main reason sorting edges is important in Kruskal's Algorithm?
ATo group edges by their vertices
BTo process edges from heaviest to lightest
CTo ensure the MST has the smallest total weight
DTo find cycles faster
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 /6 concepts.
    Describe how the Union-Find data structure helps in Kruskal's Algorithm.
    Focus on cycle detection and set management.
    You got /5 concepts.

      Practice

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

      Solution

      1. Step 1: Understand the purpose of Kruskal's Algorithm

        Kruskal's Algorithm is designed to connect all nodes in a graph with edges that have the smallest total weight without forming cycles.
      2. Step 2: Compare with other graph algorithms

        Unlike shortest path or cycle detection, Kruskal's focuses on building a minimum spanning tree, which is a tree connecting all vertices with minimum edge sum.
      3. Final Answer:

        To find the minimum spanning tree connecting all vertices with the least total edge weight -> Option B
      4. Quick Check:

        Minimum Spanning Tree = Kruskal's Goal [OK]
      Hint: Kruskal connects all nodes with minimum 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 Go code snippets correctly initializes a slice of edges for Kruskal's Algorithm?
      easy
      A. edges := []Edge{{0, 1, 10}, {1, 2, 5}, {0, 2, 15}}
      B. edges := map[int]int{0:1, 1:2, 2:3}
      C. edges := [3]int{10, 5, 15}
      D. edges := make([]int, 3)

      Solution

      1. Step 1: Identify the correct data structure for edges

        Kruskal's Algorithm requires edges with two vertices and a weight, so a slice of Edge structs is appropriate.
      2. Step 2: Check each option's suitability

        edges := []Edge{{0, 1, 10}, {1, 2, 5}, {0, 2, 15}} correctly creates a slice of Edge structs with start, end, and weight. Options A, C, and D do not represent edges properly.
      3. Final Answer:

        edges := []Edge{{0, 1, 10}, {1, 2, 5}, {0, 2, 15}} -> Option A
      4. Quick Check:

        Slice of Edge structs = Correct initialization [OK]
      Hint: Edges need start, end, weight in a slice of structs [OK]
      Common Mistakes:
      • Using map instead of slice for edges
      • Using simple int slices without struct
      • Incorrect initialization syntax
      3. Given the following Go code snippet for Kruskal's Algorithm, what will be the total weight of the minimum spanning tree printed?
      type Edge struct {
        u, v, weight int
      }
      
      func main() {
        edges := []Edge{{0,1,4}, {0,2,3}, {1,2,1}, {1,3,2}, {2,3,4}, {3,4,2}}
        // Assume union-find and sorting implemented correctly
        // MST edges chosen: (1,2), (1,3), (3,4), (0,2)
        totalWeight := 1 + 2 + 2 + 3
        fmt.Println(totalWeight)
      }
      medium
      A. 9
      B. 7
      C. 10
      D. 8

      Solution

      1. Step 1: Sum the weights of chosen MST edges

        The edges chosen are (1,2)=1, (1,3)=2, (3,4)=2, (0,2)=3. Adding these: 1 + 2 + 2 + 3 = 8.
      2. Step 2: Verify the total weight printed

        The code sums these weights and prints totalWeight. The sum is 8, which corresponds to 8.
      3. Step 3: Recalculate carefully

        1 + 2 = 3, 3 + 2 = 5, 5 + 3 = 8. So total is 8.
      4. Final Answer:

        8 -> Option D
      5. Quick Check:

        Sum MST edges weights = 8 [OK]
      Hint: Add weights of MST edges chosen carefully [OK]
      Common Mistakes:
      • Adding weights incorrectly
      • Confusing edges chosen
      • Ignoring union-find correctness
      4. Identify the bug in this Go code snippet implementing Kruskal's Algorithm:
      type Edge struct {
        u, v, weight int
      }
      
      func find(parent []int, i int) int {
        if parent[i] == i {
          return i
        }
        return find(parent, parent[i])
      }
      
      func union(parent []int, x, y int) {
        xset := find(parent, x)
        yset := find(parent, y)
        parent[xset] = yset
      }
      
      func main() {
        edges := []Edge{{0,1,10}, {0,2,6}, {0,3,5}, {1,3,15}, {2,3,4}}
        parent := make([]int, 4)
        for i := 0; i < 4; i++ {
          parent[i] = i
        }
        // Missing sorting edges by weight
        for _, edge := range edges {
          x := find(parent, edge.u)
          y := find(parent, edge.v)
          if x != y {
            union(parent, x, y)
            fmt.Println(edge)
          }
        }
      }
      medium
      A. Edges are not sorted by weight before processing
      B. Union function does not update parent correctly
      C. Find function does not use path compression
      D. Parent slice is not initialized

      Solution

      1. Step 1: Check the Kruskal's Algorithm requirements

        Kruskal's requires edges to be sorted by weight ascending before processing to ensure minimum total weight.
      2. Step 2: Analyze the code for sorting

        The code does not sort edges before the loop, so edges are processed in input order, which can lead to incorrect MST.
      3. Final Answer:

        Edges are not sorted by weight before processing -> Option A
      4. Quick Check:

        Sorting edges first = Required for correct MST [OK]
      Hint: Always sort edges by weight before union-find steps [OK]
      Common Mistakes:
      • Skipping edge sorting
      • Ignoring union-find path compression
      • Incorrect parent initialization
      5. You have a graph with vertices 0 to 5 and edges:
      
      (0,1,4), (0,2,3), (1,2,1), (1,3,2), (2,3,4), (3,4,2), (4,5,6), (3,5,1)
      
      Using Kruskal's Algorithm, which edges will be included in the minimum spanning tree?
      hard
      A. (1,2), (3,5), (1,3), (3,4), (0,2), (4,5)
      B. (0,1), (1,3), (3,4), (4,5), (3,5), (2,3)
      C. (1,2), (1,3), (3,5), (3,4), (0,2)
      D. (0,2), (1,2), (1,3), (3,4), (3,5), (4,5)

      Solution

      1. Step 1: Sort edges by weight ascending

        Edges sorted: (1,2,1), (3,5,1), (1,3,2), (3,4,2), (0,2,3), (0,1,4), (2,3,4), (4,5,6)
      2. Step 2: Pick edges without forming cycles

        Pick (1,2), (3,5), (1,3), (3,4), (0,2) - these connect all vertices without cycles. Skip (4,5) as it forms a cycle (4 and 5 already connected via 3).
      3. Final Answer:

        (1,2), (1,3), (3,5), (3,4), (0,2) -> Option C
      4. Quick Check:

        Sorted edges + no cycles = MST edges [OK]
      Hint: Sort edges, pick smallest without cycles until all connected [OK]
      Common Mistakes:
      • Including edges that form cycles
      • Not sorting edges properly
      • Missing last vertex connection
      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