1.为什么需要红黑树
虽然二叉查找树查询效率为log n,但是在频繁更新,极端情况下,二叉查找树会退化成链表,时间复杂度会变成O(n),红黑树的出现就是为了防止这种情况的产生,所有红黑树是一个特殊的二叉查找树-平衡二叉查找树
2红黑树的定义
1.根节点是黑色的;
2每个叶子节点都是黑色的空节点(NIL),也就是说,叶子节点不存储数据;
3任何相邻的节点都不能同时为红色,也就是说,2个红色节点不能连载一起
4每个节点,从该节点到达其可达叶子节点的所有路径,都包含相同数目的黑色节点;
3.红黑树的插入和删除都可能破坏红黑树的机构,所以每次插入或删除后,需要调整结构,使得其满足红黑树的结构
1.插入:
红黑树规定,插入的节点必须是红色的。而且,二叉查找树中新插入的节点都是放在叶子节点上
如果插入节点的父节点是黑色的,那我们什么都不用做,它仍然满足红黑树的定义。如果插入的节点是根节点,那我们直接改变它的颜色,把它变成黑色就可以了。
除此之后其他情况都得调整,调整规则有3个,左旋,右旋和改变颜色
变换规则: