union method

void union(
  1. T x,
  2. T y
)

Unites the sets containing x and y using union by rank.

Implementation

void union(T x, T y) {
  add(x);
  add(y);

  final rootX = find(x);
  final rootY = find(y);

  if (rootX == rootY) return;

  final rankX = _rank[rootX]!;
  final rankY = _rank[rootY]!;

  if (rankX < rankY) {
    _parent[rootX] = rootY;
  } else if (rankX > rankY) {
    _parent[rootY] = rootX;
  } else {
    _parent[rootY] = rootX;
    _rank[rootX] = rankX + 1;
  }
}