**Red/Black Trees:** These are binary trees
with the following properties.

- Every node has a value.
- The value of any node is greater than the value of its left child and less than the value of its right child.
- Every node is colored either red or black.
- Every red node that is not a leaf has only black children.
- Every path from the root to a leaf contains the same number of black nodes.
- The root node is black.

An *n* node red/black tree has the property that its height is
*O(lg(n))*. Another important property is that a node can be
added to a red/black tree and, in *O(lg(n))* time, the tree can
be readjusted to become a larger red/black tree. Similarly, a node
can be deleted from a red/black tree and, in *O(lg(n))* time,
the tree can be readjusted to become smaller a red/black tree.
Due to these properties, red/black trees are useful for data storage.

**Insertion:** The rules for readjustment when
inserting depend on the concept of rotation.