Red-black tree
With the previous tree structure, there was a major downside: a previously unknown sequence of keys that is inserted into the tree cannot be sorted. Think of how most identifiers are generated; they are typically ascending numbers. Shuffling these numbers won't always work, especially when they are gradually added. Since this leads to an unbalanced tree (the extreme case behaves just like a list), Rudolf Bayer came up with the idea of a special, self-balancing tree: the red-black tree.
This tree is a binary search tree that adds logic to rebalance after inserts. Within this operation, it is crucial to know when to stop "balancing"—which is where the inventor thought to use two colors: red and black.
In literature, the red-black tree is described as a binary search tree that satisfies a set of rules:
- The root node is always black
- Each other node is either red or black
- All leaves (often
null
/NIL
values) are considered black - A red node can only have black children
- Any path from the...