红黑树与234树

红黑树

  • 参考:宇文新粥:红黑树
  • 红黑树可视化

234树

  • 这个树有三种节点,分别包含1/2/3个元素,下方可以有2/3/4个子节点
  • 理解234树的插入
  • 红黑树与234树_第1张图片

红黑树与234树之间的关系

  • 红黑树有几个特性,但如果从234树的角度理解红黑树,可以发现对应点:

    • 在234树种的多节点(2/3个元素的节点),在红黑树种一般以父节点为黑子节点为红的样子表示

      • 如:123
      • 红黑树与234树_第2张图片
    • 在234树中父子节点在红黑树中表示为同黑(或者红黑)

      • 同黑如:1234中的123
      • 红黑树与234树_第3张图片
      • 红黑如:123456中的345以及56
      • 红黑树与234树_第4张图片
  • 从转换角度来看,红黑可以理解为:当234树中出现同节点中有多个元素了,则以父节点为黑子节点为红的样子表示,当234树中出现下一行了,则插入的是黑节点,而这个插入的节点的父节点(234树)可能是多元素的,所以可能出现黑黑/红黑两种情况

  • 更简单一点理解就是,只有多节点的234元素被标示为红黑模式,其他的其实都是黑

红黑树的特性

  • 现在来审视红黑树的特性与234树之间的关系
    • 1.每个节点不是红色就是黑色
    • 2.根节点为黑色
    • 3.如果节点为红,其子节点为黑
    • 4.任意一个节点只NULL,所含的黑色节点数必须相同
  • 从用红黑树替换234树的角度来说,红黑树其实就是用红黑表示同一个节点的不同元素。
  • 因此回顾上面4个特性:
    • 1为红黑树的规定
    • 2其实规定了同一个节点的不同元素的表示形式,即父亲节点为黑,子节点为红的形式
    • 3其实不是规定,而是在2的情况下,红节点必定是234树中拥有多个元素的两边元素,这意味着它个其父亲节点在234树种其实是一个节点,那么在2规定了多节点在红黑树种的表示之后,红节点的子节点只能是234树种的子节点,所以必定是黑色的
    • 4对应234树是一个平衡搜索树,所以黑色节点(代表234树的层数)必须相同

你可能感兴趣的:(算法练习与数据结构,c++)