一、概述
- 红黑树本质上是一棵自平衡二叉树
- 二叉树的特点:
a. 每一个节点都可以有2个子节点
b. 左子树以及右子树都是二叉树
c. 左子树都小于根节点,右子树都大于根节点 - 红黑树的特点:
a. 每一个节点非红即黑
b. 根节点一定是黑节点
c. 红节点下一定是黑节点,但是黑节点下可以是红节点也可以是黑节点
d. 最底层的叶子节点一定是黑色的空节点
e. 任意一条路径经过的黑节点个数一致,即黑节点高度一致
f. 新添加的子节点一定是红节点 - 通过红黑树的修正过程,保证了红黑树的平衡性
- 红黑树的时间复杂度是O(logn)
二、红黑树的修正
-
当前节点为红并且父节点为红,叔父节点也为红色,将父节点以及叔父节点涂黑,将祖父节点涂红
-
当前节点为红并且父节点为红,叔父节点为黑色,当前节点是右子叶,要以当前节点为基准进行左旋
-
当前节点为红并且父节点为红,叔父节点为黑色,当前节点是左子叶,要以父节点为基准进行右旋
示例: