AVL trees are an efficient way to represent data in memory using tree based structure. The major improvement of AVL trees compared to simple binary trees is that they're balanced, meaning that the insertion, deletion, etc... is promised to be O(Log2 N). In the worst case it'll take Log2 N (where N is the number of nodes in the tree) to search for or insert an item, whereas in a simple binary tree it could take O(N), just like a linked list. This library is written using AVL Trees: Tutorial and