/**
     * The union of two sets
     *
     * @param y
     */
    public void union(DisjointSet y) {
      DisjointSet xRoot = find();
      DisjointSet yRoot = y.find();

      if (xRoot.getRank() > yRoot.getRank()) {
        yRoot.setParent(xRoot);
      } else if (yRoot.getRank() > xRoot.getRank()) {
        xRoot.setParent(yRoot);
      } else if (xRoot != yRoot) {
        yRoot.setParent(xRoot);
        xRoot.incrementRank();
      }
    }