Hallo!
Ich habe ein Problem bei einer Aufgabe. Es geht um Suchbäume.
Es ist Baum gegeben und man soll ihn testen (diese Methode soll noch geschrieben werden), ob es ein Suchbaum ist.
In dieser Klasse soll die Methode geschrieben werden:
Ich habe ein Problem bei einer Aufgabe. Es geht um Suchbäume.
Es ist Baum gegeben und man soll ihn testen (diese Methode soll noch geschrieben werden), ob es ein Suchbaum ist.
Code:
public class Knoten
{
//Attribute
private int schluessel;
private Knoten teilbaumLinks;
private Knoten teilbaumRechts;
//Konstruktor
public Knoten(int schluessel, Knoten teilbaumLinks, Knoten teilbaumRechts)
{
this.schluessel = schluessel;
this.teilbaumLinks = teilbaumLinks;
this.teilbaumRechts = teilbaumRechts;
}
//Standardoperationen
public int getSchluessel()
{
return schluessel;
}
public Knoten getKnotenLinks()
{
return teilbaumLinks;
}
public Knoten getKnotenRechts()
{
return teilbaumRechts;
}
public void setSchluessel(int schluessel)
{
this.schluessel = schluessel;
}
public void setKnotenLinks(Knoten teilbaumLinks)
{
this.teilbaumLinks = teilbaumLinks;
}
public void setKnotenRechts(Knoten teilbaumRechts)
{
this.teilbaumRechts = teilbaumRechts;
}
}
Code:
public class Baeume
{
// Erzeugt einen Baum, der als Wurzel einen Knoten mit dem Schlüsselwert 'schluessel'
// besitzt und diesen Knoten mit den übergebenen Teilbäumen über den linken und rechten
// Nachfolger verknüpft.
public static Knoten add(int schluessel, Knoten teilbaumLinks, Knoten teilbaumRechts)
{
return new Knoten(schluessel, teilbaumLinks, teilbaumRechts);
}
// Erzeugt einen Knoten ohne Nachfolger
public static Knoten add(int schluessel)
{
return add(schluessel, null, null);
}
// Gibt ein Knoten-Feld zurück, in dem jedes Element die Wurzel eines Baums ist
public static Knoten[] getBaeume()
{
Knoten[] k = new Knoten[5];
k[0] = add(27, add(15,add(1, add(0), null),
add(18, add(17),
add(20, add(19),
add(25, null, add(26))))),
add(30, add(29),
add(40, add(35), add(42))));
k[1] = null;
k[2] = add(42, add(31, add(19),
add(40, add(42), add(31))),
add(50, add(45), add(52)));
k[3] = add(35, add(17, add(15, add(16), null),
add(20, add(19), add(21))),
add(40, add(39), add(41)));
k[4] = add(42);
return k;
}
}
In dieser Klasse soll die Methode geschrieben werden:
Code:
public class Suchbaum
{
public static void main(String[] args)
{
// 'baeume' enthält die Wurzelknoten der zu überprüfenden Bäume
Knoten[] baeume = Baeume.getBaeume();
for (int i = 0; i < baeume.length; i++)
{
System.out.print("Baum " + i + ": Suchbaumeigenschaft ist ");
if (checkTree(baeume[i]) == false)
{
System.out.print("nicht ");
}
System.out.println("erfüllt.");
}
}
// Diese Methode soll einen von Ihnen entwickelten Algorithmus ausführen,
// der die Suchbaum-Eigenschaft eines Baums überprüft. Übergeben wird der
// Wurzel-Knoten des Baums. Das Programm darf nicht abstürzen.
public static boolean checkTree(Knoten k)
{
//Wenn Baum leer, dann soll er true zürückgeben
//dieser code wurde von mir eingefügt
if(k.equals(null)
{
return true;
}
//Bitte um hilfe!!!
return false;
}
}