Binäre Suchbäume

Status
Nicht offen für weitere Antworten.

Hellweg

Mitglied
Hallo zusammen ich komme hier nicht weiter bitte um Hilfe.

Also ich habe hier einen binären suchbaum aufgezeichnet. Und ein Uml-Klassen diagramm ein mal klasse baum und die klasse Knoten.

die klasse Baum :

- Wurzel : Knoten
- Loeschenposition: Knoten

+ getWurzel() : knoten
+ setWurzel(Wurzel: Knoten)

Die klasse Knoten:

- Schlüssel : int
- knotenlinks: knoten
- knotenrechts: knoten

+getSchlüssel() : char
+getKnotenLinks(): knoten
+getKnotenRechts(): knoten
+getSchlüssel(char schlüssel)
+getKnotenLinks(knoten TeilbaumLinks)
+getKnotenRechts(knoten TeilbaumRechts)


Und jetztsoll eine Anweisungen angegeben werden, die nötig ist, um – für diesen speziellen
Baum - den Schlüssel des hervorgehobenen Knotens (Schlüssel 80) auf dem Bildschirm
auszugeben.

Java:
 public void proz(Baum einBaum) {}

Der schlüssel 80 ist im rechten teil des baumes. ich hänge den baum als bild an.


Mein Lösungsvorschlag ist :

Java:
  //Ausgabe
    public void ausgeben(int einruecktiefe, int xPosition, Graphics g)
    {
	    g.setColor(Color.yellow);
	    g.fillRect(xPosition - 150, 100, 300, 140);//Rechteck
	    g.setColor(Color.black);
        ausgebenTeilbaum(einBaum.getWurzel(), einruecktiefe, xPosition, g);
    }
    
    //rekursive Ausgabe der Zeichen-Schlüssel
    public void ausgebenTeilbaum(Knoten teilbaum, int einruecktiefe, int xPosition, Graphics g)
    {
        String Zeichen;

        if(teilbaum != null)
        {
            //rekursiver Aufruf
            ausgebenTeilbaum(teilbaum.getKnotenRechts(), einruecktiefe+1, xPosition + (7 - einruecktiefe) * 6, g);
            Zeichen = "" + teilbaum.getSchluessel();
            g.drawString(Zeichen, xPosition, 120 + einruecktiefe * 18);
            //rekursiver Aufruf
            ausgebenTeilbaum(teilbaum.getKnotenLinks(), einruecktiefe+1, xPosition - (7 - einruecktiefe) * 6, g);
        }

Aber das geht nur mit einer GUI.
Wie geht das ohne nur mit der Methode von oben könnt ihr mir helfen???


Liebe Grüße Stefan
 

Hellweg

Mitglied
Hi danke das du geantwortet hast aber mit der Gui das klappt das ist kein problem den Schlüssel 80 auszugeben.
Mein Problem ist es nur mit der Methode zu machen :

Java:
 public void proz(Baum einBaum) {}


ich hoffe mir kann jemand weiter helfen.
 
S

SlaterB

Gast
was ist denn jetzt genau die Frage, die Implementierung von proz?
was bedeutet denn proz, worum geht es?

nach google scheint proz kein Fachbegriff zum Thema Binäre Suchbäume zu sein ;)

gehts um "eine Anweisungen angegeben werden, die nötig ist, um [..] den Schlüssel [..] auf dem Bildschirm auszugeben"?
was genau bedeutet das, GUI oder nicht, welche Ausgabe wird erwartet, Beispiel?
 

Hellweg

Mitglied
Hi also die GUI hat nix damit zutun. Es soll eine Anweisung geschrieben werden um den Schlüssel 80 auf dembildschirm aus zugeben. Mit
Java:
public void proz(Baum einBaum) {}
 
S

SlaterB

Gast
public void proz(Baum einBaum) {
System.out.println("80");
}
 

Hellweg

Mitglied
So einfach kann das nicht sein. Oben habe ich ja auch das UML auf geschrieben muss man nicht etwas mit dem getKontenRechts() machen???
 
S

SlaterB

Gast
gerne gerne, mein Ziel ist ja, dass du näher erläuterst, worum es überhaupt geht,
ein rekursives Absuchen der Teilknoten ist bestimmt ein Bestandteil und sollte doch auch kein Problem sein,
mehr oder weniger kopieren,

aber was passiert dann wenn man am richtigen Knoten vorbeischaut und woher weiß man überhaupt welcher gesucht wird?
gibt es irgendeinen Suchparameter?
 

Hellweg

Mitglied
Geben Sie die Folge von Anweisungen an, die nötig ist, um – für diesen speziellen
Baum - den Schlüssel des hervorgehobenen Knotens (Schlüssel 80) auf dem Bildschirm
auszugeben.
public void proz(Baum einBaum){}
 
S

SlaterB

Gast
programmieren musst du es schon alleine,
wenn du anscheinend gar keine eigenen Fortschritte machst, dann kann ich auch nicht helfen,

ich zweifle langsam, dass obiger Code für die GUI von dir stammt,
einfach nur alle Knoten zu durchlaufen und unsortiert in der Konsole auszugeben wäre doch viel leichter
(und eine Vorstufe zur Lösung, nach deren Fertigstellung ich weitere Tipps geben könnte)
 

Hellweg

Mitglied
Mit der GUI ist das kein Problem das hab ich hinbekommen aber mit dieser Methode
Java:
 public void proz(Baum einBaum){}
komme ich nicht zurecht.
 

Hellweg

Mitglied
Naja, ich dachte man könnte mir hier im Java-Forum helfen aber das ist es wohl nicht. Dann hab ich wohl Pech gehabt.

Liebe Grüße Stefan
 

moormaster

Top Contributor
Ich glaube was hier gesucht wird, ist eine ganz spezielle Antwort auf eine spezielle Frage :D

Man hat genau diesen Baum gegeben und kann aus dem Bild den Pfad entnehmen, der zum Knoten mit dem Schlüssel 80 führt. Die gesuchte Antwort ist meiner Meinung nur, wie der Zugriff auf diesen einen speziellen Knoten aussieht, wenn Baum und Pfad bekannt und fest sind...

Anschaulich ist es nur eine Folge von Aufrufen:

Java:
wurzel.getRechterNachfolger().getRechterNachfolger().getLinkerNachfolger().getRechterNachfolger().getSchluessel();

Ich denke es ist jetzt klar, wie du an den Schlüssel des gesuchten Knotens kommst?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben