Disjoint Sets

Signature Description
void makeSet(T item) Creates a new set containing just the given item and with a new integer id.
int findSet(T item) Returns the integer id of the set containing the given item.
boolean union(T item1, T item2) If the given items are in different sets, merges those sets and returns true. Otherwise does nothing and returns false.

The disjointsets package contains the disjoint sets data structures required by Kruskal’s algorithm. We include a default, inefficient implementation in the skeleton.

The inefficient implementation will be replaced by the optimized UnionBySizeCompressingDisjointSets implementation to generate mazes.

An Optimized Implementation

Task

Implement UnionBySizeCompressingDisjointSets using union-by-size, path compression, and array representation optimizations.

Implementation notes:

  • We recommend reviewing the lecture slides and section materials before implementing your disjoint sets.
  • The Gradescope tests will directly inspect the pointers field so be sure to store the array representation of your disjoint sets there.

In the next section, you will use your optimized disjoint sets implementation to speed up KruskalMinimumSpanningTreeFinder.