This document describes AVL trees, a self-balancing binary search tree. AVL trees guarantee searching, insertion, and deletion operations will take O(log n) time by ensuring the heights of the two subtrees of every node differ by at most one. It discusses how to check if a tree is balanced, the different types of rotations performed during insertion to rebalance the tree if needed, and provides examples of left, right, left-left, right-right, left-right, and right-left rotations.