二叉树06:从2-3-4树到红黑树
1. 前言 红黑树是一种自平衡二叉查找树(Self-balancing binary search tree)。 如前文所述,根据红黑树的定义去理解其设计思想是非常困难的,但借助 B 树我们却可以更好地理解它,因为红黑树本就是由4阶B树推导而来。 全文较长,但为了完整的阅读体验,所以没有拆分为多篇文章,读者可以根据导图挑选阅读感兴趣的章节。 代码仓库:https://github.com/patricklaux/perfect-code 2. 由来 了解红黑树的由来和变体,有助于更好地理解。 (1) 1972 年,Rudolf Bayer 提出了 “symmetric binary B-tree”,这是B 树的 4 阶情形,也就是 2-3-4树(或称为 2-4 树)1。 (2) 1978 年,Leonidas J. Guibas 和 Robert Sedgewick 从 “symmetric binary B-tree” 推导出红黑树2。 (3) 1993 年,Arne Andersson 引入 “right leaning tree(右倾树)” 的概念来简化插入和删除操作3。 (4) 1999 年,Chris Okasaki 展示了如何使插入操作成为纯函数,只需处理 4 种失衡类型和 1 种默认平衡类型4。 (5) 2001 年,Cormen 等人将原算法的 8 个失衡类型减少为 6 个失衡类型5。 (6) 2008 年,Sedgewick 根据 Andersson 的思想,提出了 “Left leaning red black tree(左倾红黑树)”,这是 2-3 树的等价转换6。 ...