Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Fehler bei 10.4
Im 5. Unterpunkt der Aufgabe 10.4a) ist von den Methoden addLeft(BinBaum child) und addRight(BinBaum child) die Rede.
In BinBaum.java sind die Signaturen aber public void addLeft(Baum child) und public void addRight(Baum child).
Ich vermute, der Parametertyp im Code ist falsch und sollte BinBaum sein?
Ja, ist korrigiert. Danke fuer den Hinweis.
Noch ein Fehler, diese mal in Baum.java. Bei der Methode addSibling(BinBaum child) sollte es wohl addSibling(Binbaum sibling) heißen.
Beim Parametertyp bin ich mir nicht sicher, auf dem Angabenblatt steht “Baum child”, im Code jedoch “BinBaum child”, ich denke aber mal, dass das so stimmt.
Nein, die Methoden in der [m]Baum[/m] Klasse, sollten mit [m]Baum[/m] Parametern arbeiten. (Auch wenn [m]BinBaum[/m] hier keine Probleme bereitet.) Neues Skeleton ist auf der Seite.
Wenn man bei der Methode addChild in Baum dem aktuellen Knoten ein neues child anfügt, was passiert dann eventuell mit den schon bereits vorhandenen children von dem aktuellen Knoten? Werden diese gelöscht oder hängt man den neuen einfach als neues zweites oder drittes child an? Wenn ja wie funktioniert das bei dem Einfügen eines dritten child wenn ich nur die Methoden addLeft und addRight habe? :huh: Hat jemand eine Idee??
Ich weiß jetzt nicht ob ich dass richtig verstanden habe, aber in Baum hast du keine Methode addLeft oder addRight. Die hast du nur in BinBaum. Wenn ich dass jetzt richtig verstehe, glaubst du, dass der “left” der linke Kindknoten ist und “right” der rechte Kindknoten ist. Das ist aber NICHT so.
Ich würd dir Foliensatz 10, Folie 108 empfehlen, da is die Struktur eines algemeinen Baums beschreiben.
Damit sollte sich das Einfügen dann auch erklärt haben, es wird kein Kind gelöscht.
Hoffe ich konnte dir helfen
Hallo, ich versteh bei der Methode addSibling nicht, was im Wurzelfall gemeint ist. Also wie ist es zu verstehen, dass man eine neue Wurzel erzeugen soll?? Also hat man dann sozusagen zwei Wurzeln? Wenn ja, wie verhält sich das dann mit den Kindern und so? Oder soll dann das Sibling sozusagen die neue Wurzel werden??
Das Problem ist, dass die Wurzel in einem Baum keine Siblings haben kann. Deshalb soll das Sibling eine neue Wurzel und damit ein neuer Baum werden.
Wie ein neuer Baum? Also komplett unabhängig vom bisherigen??
Kann mir einer für die Methode getSubTree() einen Tipp geben?
Mein bissheriger Denkvorgang:
mMn kann man diese Methode nicht rekursiv lösen, da der Baum ja aus BinBäumen besteht, und somit ein Knoten(BinBaum) nicht wieder getSubTree() aufrufen kann…
Also muss das iterativ gelöst werden.
Doch gibt es jetzt das Problem, dass mehrere Knoten in einer Ebene wieder einen linken BinBaum hat und damit einen abgezweigten Teilbaum schaffen. Somit ist ja nicht jede Ebene “zusammenhängend”. Ich denk ihr versteht was ich meine
Somit kommt die Frage: Ist das Iterativ überhaupt möglich?
Ich hoffe jemand hat einen kleinen Tipp für mich :scared:
äh…, ich finde keine getSubTree().
meinst du countSubTree() ?
äh ja ich meinte countSubTree()
Aber ich bin selber drauf gekommen, es geht nämlich ganz easy rekursiv (so mit casten xD)
Danke trotzdem für die schnelle Antwort
Wie verhält sich das mit der print(int d) Methode? Is mir bisher garnich aufgefallen :scared: Weil dazu auch nichts in der Angabe steht…
Wie verhält sich das mit der print(int d) Methode? Is mir bisher garnich aufgefallen :scared: Weil dazu auch nichts in der Angabe steht…
Darfst Du als Hilfsmethode verwenden, oder ignorieren.