红黑树

红黑树是一种自平衡的二叉查找树,是一种高效的查找树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。因此红黑树在业界应用很广泛,比如Java中的TreeMap,JDK 1.8中的HashMap、C++ STL中的map均是基于红黑树结构实现的


红黑树的定义

  • 节点是红色或黑色
  • 根是黑色
  • 所有叶子都是黑色(叶子是NIL节点)
  • 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
  • 红链接均为左链接
  • 没有任何一个结点同时和两条红链接相连
  • 完美黑色平衡的,即任意空链接到根结点的路径上的黑链接数量相同