Klammerausdruck aus Baum

Jariel

Mitglied
Ich muss aus gegebenen Bäumen den Klammerausdruck darstellen. Der sieht wie folgt aus:

(L) w (R)

L ist dabei der linke Teilbaum, w ist der Wurzelknotens des (Teil)Baums, R ist der rechte Teilbaum.
Das Ganze soll dann so ähnlich aussehen: (((1)2(3))4((5)6(7)))

Folgende gegebene Methoden könnten nützlich sein:


Java:
-

Daraus habe ich zB. sowas gebastelt (Damit lassen sich die ersten 3 Knoten darstellen):


Java:
	-

Nun komme ich nicht weiter.
(Das ganze lässt sich vielleicht durch Rekursion lösen, aber was gebe ich da jeweils für Parameter weiter? Oder lässt sich das Ganze auch anders lösen, vllt mit den gegebenen Iteratoren?)
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ja, auch da wäre Rekursion IMHO das einfachste. Es gibt wenige Fälle, die man unterscheiden muss. Ganz grob könnte es im Pseudocode so aussehen
Code:
stringFür(Knoten k)
{
    wenn k==null ist, gib nichts aus
    wenn k ein Blatt ist, gib k.wert aus
    andernfalls gib aus: "("+stringFür(k.links)+")"+k.wert+"("+stringFür(k.rechts)+")"
}

EDIT: Die Klammern könnten dann noch nicht 100% stimmen, ... soll ein einzelnes Blatt geklammert sein? Evtl. muss der Fall k.links==null und k.rechts==null noch abgefangen werden.
 

Neue Themen


Oben