full implementation of avl tree / starting red-black tree implementation