hi, bin grade dabei ein Binärbaum zu programieren. Hab jedoch kleines Prolem beim Verständnis der Frage:
Hier noch wie so ein Grapf aus sehen soll:
Mit diesen 3 Methoden soll dann wie in der Abbildung dargestellter Baum erstellt werde.
Was ich nicht verstanden hab , wo soll die Methoden befinden? Alle in der Node -Klasse?
Was soll der Zielwert repräsentieren? Für was soll das gut sein, und was meint man mit " einen Knoten mit dem übergebenen
Schlüsselwert und dem optionalen Zielwert in dem Baum ein" (Das Wort optional stört mich. Das würde ja heißen es gibt irrgendwelche Prefärenzen?)
Soll bei der insert-Methode ein Parameter Zielwert übergeben werden?
Hier meine zwischen Lösung:
Vielen Dank schon mal!
Ein Binärbaum wird durch einen Knoten (node) abgebildet; der Knoten, der die Wurzel des Baums repräsentiert,
heißt Wurzelknoten (root). Jeder Knoten hat einen Schlüsselwert (key) und einen damit assoziierten
Zielwert (value). Ein Knoten kann einen rechten und einen linken Teilbaum haben. Alle Knoten im linken
Teilbaum haben ausschließlich Schlüsselwerte die kleiner sind als der Schlüsselwert des betrachteten Knotens.
Die Schlüsselwerte der Knoten im rechten Teilbaum sind ausnahmslos größer als der des betrachteten
Knotens. Zwischen den Schlüsselwerten muss eine Ordnungsbeziehung bestehen, so dass sie vergleichbar
sind (größer, kleiner, gleich). Ein Knoten ohne linken bzw. rechten Teilbaum heißt „Blatt“ (leaf ).
Der Einfachheit halber gehen wir davon aus, dass Schlüsselwerte ganzzahlig und Zielwerte Zeichenketten
sind.
Implementieren Sie die Klasse Node mit den gegebenen Attributen und drei Methoden: dem Konstruktor,
einer get- und einer insert-Methode.
Dem Konstruktor muss ein Schlüsselwert übergeben werden; die Angabe eines Zielwertes, eines rechten
und linken Knotens ist optional.
Die get-Methode betrachtet den vorliegenden Knoten als Wurzelknoten und sucht zum gegebenen
Schlüsselwert den Knoten mit diesem Schlüsselwert heraus. Sollte kein Knoten mit diesem Schlüsselwert
existieren, wird „nichts“ zurückgegeben – in den meisten Programmiersprachen ist das ein
Null, None oder Nil.
Die insert-Methode fügt, ausgehend vom vorliegenden Knoten, einen Knoten mit dem übergebenen
Schlüsselwert und dem optionalen Zielwert in dem Baum ein. Eine geeignete Einfügestelle muss
dazu gefunden werden. Existiert bereits ein Knoten mit dem Schlüsselwert, so wird der Zielwert
überschrieben.
Hier noch wie so ein Grapf aus sehen soll:
Mit diesen 3 Methoden soll dann wie in der Abbildung dargestellter Baum erstellt werde.
Was ich nicht verstanden hab , wo soll die Methoden befinden? Alle in der Node -Klasse?
Was soll der Zielwert repräsentieren? Für was soll das gut sein, und was meint man mit " einen Knoten mit dem übergebenen
Schlüsselwert und dem optionalen Zielwert in dem Baum ein" (Das Wort optional stört mich. Das würde ja heißen es gibt irrgendwelche Prefärenzen?)
Soll bei der insert-Methode ein Parameter Zielwert übergeben werden?
Hier meine zwischen Lösung:
Java:
public class BinTree {
/**
* @param args
*/
public class Node {
public int key;
public Node left;
public Node right;
public String value;
public Node(int key, String value) {
this.key = key;
this.value = value;
}
// public String get(int keySearch) {
// if (keySearch == key) {
// return key + "";
// } else if (left.key == keySearch) {
// return left.key + "";
// } else if (right.key == keySearch) {
// return right.key + "";
// }
//
// return null;
// }
}
private Node root;
public String get(int keySearch) {
if (keySearch == root.key) {
return root.key + "";
} else if (root.left.key == keySearch) {
return root.left.key + "";
} else if (root.right.key == keySearch) {
return root.right.key + "";
}
return null;
}
public void insert_Methode(int key) {// ohne Prameter Zielwert
if (root == null) {
Node first = new Node(key, );// hab das jetzt offen gehalten
// weill ich nicht weiss wie ich
// dass mit dem Zeilwert
// handhaben soll
root = first;
} else if (root.left == null) {
Node startL = new Node(key, );
root.left = startL;
} else {
Node startR = new Node(key, );
root.left = startR;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
Vielen Dank schon mal!
Anhänge
Zuletzt bearbeitet: