红黑树是一种自平衡的二叉查找树,是一种高效的查找树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。因此红黑树在业界应用很广泛,比如Java中的TreeMap,JDK 1.8中的HashMap、C++ STL中的map均是基于红黑树结构实现的
红黑树的定义
- 节点是红色或黑色
- 根是黑色
- 所有叶子都是黑色(叶子是NIL节点)
- 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
- 红链接均为左链接
- 没有任何一个结点同时和两条红链接相连
- 完美黑色平衡的,即任意空链接到根结点的路径上的黑链接数量相同