# Klammerausdruck aus Baum



## Jariel (16. Jan 2011)

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:



```
-
```

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



```
-
```

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?)


----------



## Marco13 (16. Jan 2011)

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

```
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.


----------



## XHelp (16. Jan 2011)

Mit Rekursion ist es meiner Meinung nach einfacher. Da sollte eine Weitergabe von einem Knoten genügen


----------



## Jariel (16. Jan 2011)

habs


----------

