【数据结构】—— 10、平衡二叉树之红黑树与2-3树

红黑树的5个性质:

  • 1、每个节点或者是红色的或者是黑色的。
  • 2、根节点是黑色的。
  • 3、每一个叶子节点(最后的空节点NIL)是黑色的。
  • 4、如果一个节点是红色的,那么他的孩子节点一定是黑色的。
  • 5、从任意一个节点到叶子节点,所经过的黑色节点数量相同。
一、2-3树

a的左孩子值 < a,a右孩子的值 > a,在右图中可以存放两个元素b、c,该树有三个孩子,左孩子的值 < b,b < 中间孩子的值 < c,右孩子的值 > c

  • 对于2-3树来说,它是一个绝对平衡的树。即从根节点到任意一个叶子节点,所经过的节点数量一定是相同的。
  • 树在添加节点时,如果子树为空,则进行融合,如果融合之后是四节点,则分裂。

假设现在有个根节点42,现在要向42添加一个元素37,如果是二分搜索树,则37应该添加到42的左子节点,但是2-3树有一个很重要的性质:就是对于2-3树来说添加节点绝对不会添加到一个空的位置。

因为42的左子树为空,所以37只能添加到最后一个叶子节点上,而现在最后一个叶子节点是根节点42,所以37与42融合,成为一个3-节点,此时只有一个节点,整个树是绝对平衡的。

现在我们又添加一个12,但此时根节点的左子树还是为空,为了保持绝对平衡,12先与根节点融合成为4-节点

但由于2-3树不能存在4-节点,所以此时的根节点可以分裂成一棵子树,有三个2-节点组成的绝对平衡树

如果我们融合的3-节点是叶子节点,父亲节点为2-节点的话

如果我们融合的3-节点是叶子节点,父亲节点为3-节点的话

二、2-3树与红黑树的等价性

在红黑树中,所有的红色节点都是向左倾斜的。
黑色为普通节点,红色为特殊节点,红色表示【红色的b】与其父节点【黑色的c】在2-3树是以3节点相融的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章