红黑树
红黑树本质上是一种二叉查找树,但它在二叉查找树的基础上额外添加了一个标记(颜色),同时具有一定的规则。这些规则使红黑树保证了一种平衡,插入、删除、查找的最坏时间复杂度都为 O(logn)。
它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。比如在 Java 集合框架中,很多部分(HashMap, TreeMap, TreeSet 等)都有红黑树的应用,这些集合均提供了很好的性能。
红黑树的五个性质
1.每个节点要么是红的,要么是黑的。
2.根节点是黑的。
3.每个叶节点,即空节点(nil)是黑的。
4.如果一个节点是红的,那么它的子节点是黑的。
5.对每个节点,从该节点到其子孙节点的所有路径上包含相同数目的黑节点。
调整
红黑树插入、或删除结点后,可能会违背、或破坏红黑树的原有的性质。
所以为了使插入、或删除结点后的树依然维持为一棵新的红黑树。
那就要做俩方面的工作:
1.部分结点颜色,重新着色
2.调整部分指针的指向,即左旋、右旋。