Неизменяемые структуры данных (Persistent Data Structures)

Требования

Реализуйте библиотеку со следующими структурами данных в persistent-вариантах: Требуется собственная реализация перечисленных структур. Найти соответствующие алгоритмы также является частью задания. Язык реализации не фиксируется, но рекомендуется Java/C#/С/C++. Для языков типа Clojure или Haskell задание бессмысленно, т.к. такие структуры и так встроены в язык. В Ruby и т.п. реализация будет слишком медленная и неэффективная. В базовом варианте решения все структуры данных могут быть сделаны на основе fat-node. Требования:

Дополнительные требования

Рекомендации

Для успешного выполнения задания следует самостоятельно подобрать и изучить публикации по теме Persistent Data Structures