设计背景
AVL树通过严格的平衡因子制度来触发自平衡操作,它是一种高度平衡的BST,在数据的查询上有着显著的优势,但在某些场景下,过于频繁的自平衡操作可能会带来多余的时间消耗。
在树领域中还有一种著名的自平衡BST——红黑树(Red Black Tree),它通过特殊的机制来降低自平衡触发的次数,以牺牲平衡性来节省开销,其属于弱平衡的BST。
红黑树是一种综合性能折中的选择,适合增删改查等多重操作发生的情况。
结构分析
【结构类型】树形结构
【底层实现】Node模型(key+value+左指针+右指针)
【核心方法】
public void add(K key, V value); //向AVL树添加元素
private Node leftRotate(Node y); //左旋转
private Node rightRotate(Node y); //右旋转
private void flipColors(Node node); //颜色翻转
【基本性质】
- 每一个节点非黑即红
- 整棵树的根节点是黑色的
- 所有叶子节点都是黑色的
- 如果一个节点是红色的,那么它的两个子节点都是黑色的
- 从任意