public List<String> spenntreKruskal()
  {
    record NyKant(String fra, String til, int vekt)
    {
      public String toString() { return "(" + fra + "," + til + "," + vekt + ")"; }
    }

    PriorityQueue<NyKant> kø = new PriorityQueue<>((a,b) -> a.vekt - b.vekt);

    for (Node p : noder.values())  // alle nodene
    {
     for (Kant kant : p.kanter)
      {
        if (!kant.til.ferdig)  // legger inn i køen
          kø.offer(new NyKant(p.navn, kant.til.navn, kant.vekt));
      }
      p.ferdig = true;
    }

    nullstill();  // setter ferdig tilbake til false

    List<String> liste = new ArrayList<>();  // en liste for kanter

    UnionFinn<String> mengder = new UnionFinn<>();  // elementene er av typen String

    int vektsum = 0;  // vekten til det minimale spenntreet

    while (!kø.isEmpty())  // tar fra køen
    {
      NyKant kant = kø.poll();  // tar ut en kant

      int antall = mengder.union(kant.fra, kant.til);  // 0 hvis de er i samme mengde

      if (antall > 0)
      {
        vektsum += kant.vekt;        // øker vekten
        liste.add(kant.toString());  // denne kanten hører til spenntreet
      }
      if (antall == noder.size()) break;  // alle noder er tatt med
    }

    liste.add("Vekt: " + vektsum);  // tar med vekten på treet

    return liste;
  }