<!-- vim: set ft=markdown: -->
<!-- LTeX: language=de-DE -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
# Praxisaufgabe 1 Einführung in die Computergrafik
## Team
* Simon Bruder, Matrikelnummer: 5075324
## Bearbeitete Zusatzaufgaben
* Rekursive Traversierung: `node::print_recursive()`
* Iterative Traversierung: `node::print_iterative()`
* Bauen einer dynamischen Bibliothek `libtree.so` (siehe unten für Hinweise)
* Bauen einer statischen Bibliothek `libtree.a`
## Hinweise
### Signatur der Traversierungsmethoden
Die rekursive und iterative Traversierung sollen laut Aufgabenstellung
„ähnlich zum `<<`-Operator“ implementiert werden.
Da es aber pro Klasse nur eine Implementation des `<<`-Operators geben kann,
habe ich die Funktionen so implementiert, dass sie `std::string` zurückgeben
und damit die Anwendung ähnlich ist wie bei Verwendung von `print` (aus 1.2.3):
```cpp
// statt
std::cout << n;
// ist es für die anderen Traversierungsmethoden
std::cout << n.print_recursive();
// bzw.
std::cout << n.print_iterative();
```
### Statische und dynamische Bibliothek
Im Normalfall baut das CMake-Projekt eine statische Bibliothek und linkt `main` dagegen.
Damit ist Zusatzaufgabe 3 erfüllt.
Um eine dynamische Bibliothek zu bauen und `main` dagegen zu linken,
kann CMake mit `-DBUILD_SHARED_LIBS=ON` aufgerufen werden.
Da unter GNU keine spezifischen Annotationen dafür nötig sind, ist Zusatzaufgabe 4 erfüllt.