JDK TreeMap Red-Black Tree
3 月,跳不动了?>>> 介绍另一种平衡二叉树:红黑树( Red Black Tree ),红黑树由 Rudolf Bayer 于 1972 年发明,当时被称为平衡二叉 B 树( symmetric binary B-trees ), 1978 年被 Leonidas J. Guibas 和 Robert Sedgewick 改成一个比较摩登的名字:红黑树。 红黑树和之前所讲的 AVL 树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。自从红黑树出来后, AVL 树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。不过在我了解了红黑树的实现原理后,并不相信这是真的,关于这一点我们会在后面进行讨论。 红黑树和 AVL 树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是 AVL 树中的非常严格的平衡。之前我们在讲解 AVL 树时,已经领教过 AVL 树的复杂,但 AVL 树的复杂比起红黑树来说简直是小巫见大巫。红黑树是真正的变态级数据结构。 红黑树的平衡 红黑树首先是一棵二叉查找树,它每个结点都被标上了颜色(红色或黑色),红黑树满足以下 5 个性质: 1、 每个结点的颜色只能是红色或黑色。 2、 根结点是黑色的。 3、 每个叶子结点都带有两个空的黑色结点(被称为黑哨兵),如果一个结点 n 的只有一个左孩子,那么 n