来看234树的添加操作
添加如果出现需要分裂的情况,分裂出的元素首先进行和父级合并,如果父级已经是4节点那么将父级分裂,递归操作
234树的生长全部都是从叶子节点进行生长的,从叶子节点进行分裂向上延伸
红黑树
=======
性质
-
每个节点要么红色,要么黑色
-
根节点是黑色
-
每个子节点 (NIL) 是黑色
-
每个红色节点的两个子节点一定是黑色
-
任意一节点到每个叶子节点的路径都包含数量相同的黑节点
解释一下性质
性质4和性质5说一下
如果一个红色节点那么它的两个子节点必须为黑色,包括nil节点,也就是说不能有两个红色节点相连
任意一个叶子节点或没有子节点的节点到根节点经过的黑色节点数量都一致,不懂下面再解释
叶子节点 : 标记为NIL,为虚拟节点,颜色必须为黑色,234中叶子节点为没有子节点的节点,而红黑树的叶子节点是虚拟的节点
3节点的两种形态如果红色在左边就叫做左倾,红色在右边就叫做右倾
将234树进行转换为红黑树操作
右倾
左倾
现在来看一下几个没有子节点的节点下面其实都有两个NIL节点我们可以任意从一个nil节点出发,到6根节点,所经过的黑色节点个数是一样的,一般情况下NIL节点是不画出来的,但是不代表不存在
红黑树操作
=========
变色:节点的颜色由黑变红或者由红变黑