107 lines
2.3 KiB
Java
107 lines
2.3 KiB
Java
package GraphenTeorie;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
public class Knoten {
|
|
|
|
private String beschriftung;
|
|
private boolean markiert;
|
|
|
|
private ArrayList<Kante> eingehendeKanten;
|
|
private ArrayList<Kante> ausgehendeKanten;
|
|
private ArrayList<Kante> anliegendeKanten;
|
|
|
|
private ArrayList<Knoten> nachbarKnoten;
|
|
|
|
|
|
public Knoten() {
|
|
this("");
|
|
}
|
|
|
|
|
|
public Knoten(String beschriftung) {
|
|
this.beschriftung = beschriftung;
|
|
this.markiert = false;
|
|
|
|
this.eingehendeKanten = new ArrayList<>();
|
|
this.ausgehendeKanten = new ArrayList<>();
|
|
this.anliegendeKanten = getAnliegendeKanten();
|
|
}
|
|
|
|
|
|
public ArrayList<Kante> getAnliegendeKanten() {
|
|
ArrayList<Kante> neueListe = new ArrayList<>(this.eingehendeKanten);
|
|
neueListe.addAll(this.ausgehendeKanten);
|
|
this.anliegendeKanten = neueListe;
|
|
return this.anliegendeKanten;
|
|
}
|
|
|
|
|
|
public ArrayList<Kante> getEingehendeKanten() {
|
|
return this.eingehendeKanten;
|
|
}
|
|
|
|
|
|
public ArrayList<Kante> getAusgehendeKanten() {
|
|
return this.ausgehendeKanten;
|
|
}
|
|
|
|
|
|
public void addEingehendeKante(Kante neueKante) {
|
|
this.eingehendeKanten.add(neueKante);
|
|
this.anliegendeKanten.add(neueKante);
|
|
}
|
|
|
|
|
|
public void addAusgehendeKante(Kante neueKante) {
|
|
this.ausgehendeKanten.add(neueKante);
|
|
this.anliegendeKanten.add(neueKante);
|
|
}
|
|
|
|
|
|
public void setMarkierung(boolean markiert) {
|
|
this.markiert = markiert;
|
|
}
|
|
|
|
|
|
public boolean getMarkierung() {
|
|
return this.markiert;
|
|
}
|
|
|
|
|
|
public ArrayList<Knoten> getAllNachbarKnoten() {
|
|
ArrayList<Knoten> nachbarnListe = new ArrayList<>();
|
|
for (Kante i: this.anliegendeKanten) {
|
|
nachbarnListe.add(i.getOtherSide(this));
|
|
}
|
|
return nachbarnListe;
|
|
}
|
|
|
|
|
|
public void editBeschriftung(String neueBeschriftung) {
|
|
this.beschriftung = neueBeschriftung;
|
|
}
|
|
|
|
|
|
// Wenn man den Knoten löscht, teilt sich der Graph
|
|
public boolean isArtikulation() {
|
|
return true;
|
|
}
|
|
|
|
|
|
// Implementierung mit Dijkstra
|
|
public int distanzTo(Knoten k1) {
|
|
ArrayList<Knoten> baum = new ArrayList<>();
|
|
baum.add(this);
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
// Maximaler Abstand zu irgendeinem Knoten
|
|
public int exzentrizitaet() {
|
|
return 1;
|
|
}
|
|
}
|