# AVL Trees

by Eddie Huang#### A Cool Demo

#### Description

AVL Trees are self-balancing binary search trees that allow you to store and query data in logarithmic time.
They maintain a logarithmic height so that functions like `find`

and `insert`

take logarithmic time.
Whenever any node has an *imbalance* of *2 or greater*, the tree performs rotations to rebalance.

The *imbalance* of a node in a binary tree is defined as the height difference between its two subtrees.

If an AVL tree has multiple imbalanced nodes, it will rebalance the nodes from the lowest level to the highest.

#### A left rotation

Right rotations and left rotations are mirrors of each other.

#### A right-left rotation

Left-right rotations and right-left rotations are mirrors of each other.