动画 | 什么是红黑树?(与2-3树等价)
学习过2-3树之后就知道应怎样去理解红黑树了,如果直接看「算法导论」里的红黑树的性质,是看不出所以然。我们也看看一颗二分搜索树满足红黑的性质: 1.每个节点或是红色的,或是黑色的; 2.根节点是黑色的; 3.每个叶子节点(NIL)是黑色的; 4.如果一个节点是红色的,则它的两个子节点都是黑色的; 5.对每个节点,从该节点到其所有后代叶子节点的简单路径上,均包含相同数目的黑色节点。 如果说前面4个还算理解,那第5个性质又是怎么去理解呢?此时我们借着2-3树去理解基本的红黑树,当然我会在后几篇文章介绍2-3-4树以及基于2-3-4树的红黑树。 抛开上面二分搜索树满足红黑的性质,我们知道2-3树不是二叉树,我们把它转换成一颗二叉树,2-节点很好转,3-节点转二叉却有两种,如下图: 红黑是指被指向节点的链接颜色,对于一颗2-3树,因为3-节点的存在有很多不同的二叉树的表示,所以我们只考虑左倾的情况。 左倾红黑树和2-3树等价的定义 红黑树的定义是含有红黑链接并满足下列条件的二分搜索树: 1.红链接均为左连接; 2.没有任何一个节点同时和两条红链接相连; 3.该树是完美黑色平衡的,即任意空链接到根节点的路径上的黑链接数量相同(和2-3树等价的,任意节点到其叶子节点的高度都是相同的)。 因为2-3树不存在永久的4-节点,4-节点终归要分解的(在2-3-4树中,为了更好地插入和删除,4