A little of a theory you can get from pseudocode section. There are definitions of used data structures and explanation of the algorithms.

This is a first version of the application. I have a lot of good ideas how to improve it.
I want make the draw area resizable, create more algorithms on more data structures (AVL tree, B-tree, etc.), list currently animating (sub)algorithm.
However if you have some idea you can let me know.