A red-black tree is a binary search tree having the following ordering
properties:
1. Every node is colored either red or black.
2. The root is black.
3. If a node is red, its children must be black.
4. Every path from a node to a NULL pointer must contain the same
number of black nodes.