package Graphen;

public class Kanten  {
	// jede Kante verbindet zwei Knoten
	private Knote anfangsKnote;
	private Knote endeKnote;
	private boolean UndirectedGraph;
	private int gewicht;

	// Kante verbindet zwei Knoten (Undirected Graph)
	public Kanten(Knote anfangsKnote, Knote endeKnote, boolean UndirectedGraph) {
		this.anfangsKnote = anfangsKnote;
		this.endeKnote = endeKnote;
		this.UndirectedGraph = UndirectedGraph;
		anfangsKnote.addKante(this); //speichert dann zu ihrem ArrayList diese Kante
		endeKnote.addKante(this);//speichert dann auch zu ihrem ArrayList diese gleiche Kante
	}

	// Kante verbindet eine Knote (Directed Graph)
	public Kanten(Knote anfangsKnote, Knote endeKnote) {
		this.anfangsKnote = anfangsKnote;
		this.endeKnote = endeKnote;
		anfangsKnote.addKante(this);
	}

	// Kante verbindet eine Knoten und mit Gewicht (Weighted Directed Graph)
	public Kanten(Knote anfangsKnote, Knote endeKnote, int gewicht) {
		this.anfangsKnote = anfangsKnote;
		this.endeKnote = endeKnote;
		//anfangsKnote.addkanteMitGewicht(this,gewicht);
	}

	// Kante verbindet zwei Knoten und mit Gewicht (Weighted UnDirected Graph)
	public Kanten(Knote anfangsKnote, Knote endeKnote, int gewicht, boolean UndirectedGraph) {
		this.anfangsKnote = anfangsKnote;
		this.endeKnote = endeKnote;
//		anfangsKnote.addkanteMitGewicht(this, gewicht);
//		endeKnote.addkanteMitGewicht(this, gewicht);
		this.UndirectedGraph = UndirectedGraph;
	}

	public Knote getPartner(Knote k) {
		return (k == anfangsKnote) ? endeKnote : anfangsKnote;
	}

	public int getGewicht() {
		return gewicht;
	}

	public Knote getAnfangsKnote() {
		return anfangsKnote;
	}

	public Knote getEndeKnote() {
		return endeKnote;
	}
	
	
	

}
