大纲

1.红黑树怎么自平衡

2.什么时候需要左旋,什么时候需要右旋?

3.插入和删除破坏了树的平衡怎么处理

红黑树的定义和性质

红黑树是一种含有红黑节点并能够自平衡的二叉查找树,必须满足以下性质

1.节点要么是黑色要么是红色

2.根节点是黑节点

3.每个叶子节点(NIL)是黑色的

4.每个红色节点的两个子节点一定是黑色的

5.任意节点到每个叶子节点的路径都包含相同数量的黑节点

5.1如果一个节点存在黑子节点,那么该节点肯定有两个子节点


一颗简单的红黑树
红黑树原理 - 图2

叶子节点:nil,黑色,在java中,叶子节点都是null的节点

红黑树节点叫法

红黑树原理 - 图3

红黑树怎么实现自平衡?三种操作:左旋、右旋、变色

左旋:已最短路径,进行旋转
右旋:已最短路径,进行旋转
变色:节点的颜色从黑变成红或从红变成黑

红黑树原理 - 图4

红黑树原理 - 图5