AVL tree
An AVL tree is a binary search tree in which the height of the left and right subtree of the root vary by at most 1 and in which the left and right subtrees are again AVL trees. With every node of an AVL tree is associated with a balanced factor that is left high, equal or right high, according, respectively, as the left subtrees has height greater than, equivalent to, or less than that of the right subtree.