Binäre Suchbäume mit Algorithmus erweitern?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Der Zweck der Übung wird nicht so wirklich klar.

An Deinem Beispiel (graphisch) wird nicht klar, warum ausgerechnet diese Blätter hinzugefügt werden.

Welchem Zweck also dient die Erweiterung?


EkkoMcfly 
Fragesteller
 02.06.2022, 21:27

Es ist halt einfach eine Übung um das Verständnis zu verbessern. Einen wirklich praktischen Zweck gibt es da nicht. Man hat einfach einen Baum T gegeben und dann soll man einen Algorithmus entwickeln, der an die Blätter vom Baum T weiter Blätter anhängt. Nach dem Anhängen soll es sich halt immer noch um einen binären Suchbaum handeln. Einen Zweck gibt es da nicht. Typische Schulaufgabe halt: Es gibt keine praktische Relevanz.

Ich verstehe aber nicht warum dir nicht klar ist warum ausgerechnet diese Blätter hinzugefügt wurden. Es handelt sich ja um einen Suchbaum. Als linkes Kind von der zwei braucht man etwas das kleiner ist als zwei. Das ist dann halt nur die 1. Als rechtes Kind von der zwei braucht man einen Schlüssel der größer ist als zwei aber kleiner als 4. Das ist halt nunmal nur die drei. Als linkes Kind von der 6 brauchen wir wieder einen Schlüssel der kleiner ist als 6 aber größer als 4, da gibt es nur die 5. als rechtes Kind von der 6 brauchen wir einen Schlüssel der größer ist als 6 aber kleiner als 8, das ist dann nur die 7. Die 9 braucht als linkes Kind einen Schlüssel der kleiner ist als 9 aber größer als 8. Das wäre 10, aber 10 ist schon Vaterknoten von 9, deswegen kann es kein linkes Kind geben. Als rechtes Kind von der 9 brauchen wir etwas das größer ist als 9 aber kleiner als 10, es gibt keine natürliche Zahl die diese Bedingung erfüllt, also wird kein Blatt angehangen. Bei der 11 brauchen wir als linkes Kind etwas das kleiner ist als 11 aber größer als 10. Da gibt es nicht. Als rechtes Kind von der 11 könnnen wir jedes x Element R nehmen für das gilt, dass x > 11. Der Algorithmus wählt dann einfach eine Zahl die diese Bedingung erfüllt. Es ist also durchaus klar definiert (durch die Eigenschaften eines Suchbaums) welche Schlüsselwerte genommen werden müssen.

0
KarlRanseierIII  02.06.2022, 21:36
@EkkoMcfly

Naja, bei einem Suchbaum fügt man ja ansich Schlüssel hinzu, die dann an einem geeigneten Ort landen.

Bei einem binären Suchbaum wird das ein Blatt sein.

Soweit so klar.

Dadurch "degeneriert" der Baum - will man dies nicht und soll er weiterhin ausgewichtet sein, muß er eben 'repariert' werden, indem man Rotationen ausführt.

Quasi nach Schlüssel zu suchen, die man an einer bestimmten Stelel als Blatt anhängen kann, ist irgendwie 'eigenartig'.

0
KarlRanseierIII  02.06.2022, 21:51
@KarlRanseierIII

Aber um zur Frage zurückzukommen, Wann immer Du links absteigst, wird der aktuelle Schlüssel Dein Upper Bound, wenn Du rechts absteigst, Dein Lower Bound. Kommst Du an einem Blatt an, kannst Du ein linkes Kind zwischen Lower Bound und aktuellem Blattschlüssel erzeugen, ein rechtes zwischen Blatt udn Upper Bound.

Kommst Du damit weiter?

1
EkkoMcfly 
Fragesteller
 02.06.2022, 22:38
@KarlRanseierIII

Ja das hilft mir wirklich sehr, weiter ich werde jetzt erstmal probieren mit diesem Ansatz weiter zu arbeiten.

0
EkkoMcfly 
Fragesteller
 03.06.2022, 22:48
@KarlRanseierIII

Okay ich habe jetzt einen Algorithms dazu entworfen der auch funktioniert. Ich habe erst ein paar Probleme gehabt mit der Startinitialisierung, aber zu Beginn sollte doch lowerBound = 0 sein und upperBound = unendlich (bzw. in der Implementierung dann der maximale Wert für den Datentyp z.B. Integer), oder? Damit funktioniert es auf jeden Fall.

0
KarlRanseierIII  03.06.2022, 23:07
@EkkoMcfly

Bei numerischen Werten würdest Du natürlich (formal) ansich mit -Inf und + Inf (Unendlich) starten, in der Praxis orientierst Du Dich natürlich am zulässigen Wertebereich.

1