红黑树简单了解
学习红黑树之间首先首要了解二叉搜索树。
1.二叉搜索树定义
1.左子树上所有节点的值均小于等于根节点的值
2.右子树上所有节点的值均大于等于跟节点的值
3.每一颗子树都要符合上述定义
缺点:
正常情况下 二叉搜索树的添加和查找的时间复杂度为O(log N)
当按序添加数据时,二叉搜索树退化成了一个链表,时间复杂度提高到O(N)
2.红黑树
红黑树是一种自平衡的二叉树查找树,符合二叉搜索树的基本特性。除此之外还附加特性
- 跟节点为黑色
- 节点的颜色只有红色和黑色
- 红色节点的孩子节点必须为黑色
- 叶子节点必须为黑色(NIL节点)
- 从任意节点到叶子节点所经过的黑色节点数量相同。
特性:从跟节点到叶子节点上的最长路径不会超过最短路径的两倍
当插入或者删除时,有些规则可能会被打破,我们需要通过变色和旋转来调整。
1.变色
22节点时
2.旋转
2.1左旋转
2.2 右旋转
总结:
当执行新增和删除时,红黑树通过变色和自旋来维持。
3.引用场景
HashMap