Binärbaum mit java implementieren!

BonKeri

Mitglied
Ich habe es seit zwei wochen versucht aber nix kommt raus 🙁
ich hoffe jemand kann mit weiter helfen.

Das ist die Aufgabe:
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.


-----------------------------------------------------------------------------------------------

Bis jetzt habe ich nur das hier geschrieben:


public class Node {

int key;
String value;
Node left,right;


public Node(int key) {
// TODO Auto-generated constructor stub
this.key=key;
}

public Node(int key, String value){
this.key=key;
this.value=value;
}

public Node(int key, String value, Node left, Node right){
this.key=key;
this.value=value;
this.left=left;
this.right=right;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}


------------------------------------------------------
es sieht so aus:
 

Anhänge

  • baumgrapf.png
    baumgrapf.png
    16,8 KB · Aufrufe: 26
Zuletzt bearbeitet:
Hi,

liest sich wie: Ja ich habe eine Hausaufgabe über Ostern und besseres zu tun, als diese Aufgabe. Im Forum wird diese schon jemand lösen.

Ohne Konkrete Frage, keine Hilfe.

Sorry.
 
Ja wenn Sie mir helfen wollen das wäre sehr nett, aber wenn Sie nicht helfen wollen dann einfach nicht schreiben, ich habe das hier gepostet weil ich dachte ich kriege unterstützung in diesen Forum!


MfG
 
Ich habe Dir einfach wartezeit erspart. Du bekommst hier keine fertige Lösung. Aber ich sehe auch keine richtige Frage, sondern nur eine Aufgabenstellung.
 
soweit ich das sehe, ist auch auch nur ein Konstruktor nötig.

letztendlich sollst du 2 Methoden implementieren, eine getMethode und eine insertMethode.

Die get Methode liefert dir etwas zurück, also in deinem Fall einen Knoten, im Endeffekt steht eigentlich alles da was du brauchst.

Du bekommst einen Knoten, diesen sollst du als Wurzel nutzen, und ausgehend von dem den Knoten mit dem richtigen Zielwert ( das ist dein Attribut, bzw ein Attribut aller deiner Knoten) suchen.

Du siehst doch in deiner Zeichnung, dass die Werte eine bestimmte Reihenfolge ausgehend vom Wurzelknoten haben. Du musst also prüfen, ob die Wurzel der gesuchte knoten ist, falls nicht, musst du die Wurzel in die richtige Richtung "verschieben" und wieder prüfen. Falls es keinen Knoten gibt, sollst du nichts zurückgeben.

Ich hoffe das hilft dir ein wenig
 

Neue Themen


Zurück
Oben