Kenntnisse über effiziente Algorithmen und Datenstrukturen sind eine der zentralen Voraussetzungen für die Entwicklung leistungsfähiger Programme. Daher ist es wichtig, für grundlegende Probleme der Informatik gute algorithmische Lösungen zu kennen und zu verstehen, wie diese zu Lösungen komplexerer Aufgaben kombiniert werden können. Entsprechend behandelt dieses Buch eine Vielzahl bekannter Datenstrukturen und Algorithmen. Doch nicht für alle Probleme, denen wir in der Praxis begegnen, gelingt eine Lösung nur aus bereits bekannten Bausteinener. Für die Lösung solcher Probleme werden Herangehensweisen - Entwurfsmethoden genannt - vorgestellt.