Книга посвящена алгоритмам обработки сложных структур данных. Рассматриваются решения наиболее распространенных задач: создание и изменение деревьев, поиск кратчайшего пути между вершинами в графе, обработка списков и массивов, символьное преобразование выражений. Примеры классических алгоритмов реализованы на языке Java, обеспечивающем объектно-ориентированный подход к программированию и являющемся универсальным при работе на различных платформах. Приводятся сведения о технологии построения программ, основу которых составляют объекты, обменивающиеся сообщениями. Описывается функциональное представление информации, позволяющее получать короткие и изящные программы для решения сложных задач. Для широкого круга программистов.