红黑树
规则:
-
节点只有黑色和红色,根节点必须为黑色,叶子节点为空节点且必须为黑色,不能有连续的红色节点,红色节点的父亲节点不能为红色。
-
从任意一个节点出发到叶子节点的所有路径中经过的黑色节点数目相等。(平衡二叉树是高度差不能超过1,红黑树不能保证平衡二叉树一样完全的平衡)
操作:
-
变色
插入节点为红色,自底向上变换节点颜色,满足规则2,“平衡”:节点到叶子节点的所有路径中黑色节点数目相同。
a. 插入节点21颜色为红色。
b. 颜色变换,不算上空节点,三层颜色变换达到一个符合规则2局部红黑树。 -
旋转(左旋和右旋)
c. 当颜色变换后,进行左旋转(类似平衡二叉树旋转)
d. 进行颜色变换满足根节点为黑色,变换后,会平衡。
参考博客&图片来源