Algorithm 排序值的红黑树插入操作的行为

Algorithm 排序值的红黑树插入操作的行为,algorithm,data-structures,tree,red-black-tree,red-black-tree-insertion,Algorithm,Data Structures,Tree,Red Black Tree,Red Black Tree Insertion,我不熟悉数据结构。我已经经历了红黑树插入算法的实现。我无法理解算法如何处理排序值的插入 让我用数据集[10,5,2]来说明 因此,将插入初始值10,它将是树的根,其颜色将为黑色。 十, 接下来,我们将在根10下添加5。5的颜色将是红色(到目前为止,它没有违反任何属性)。 现在,我们将添加2。添加后,树的外观如下所示:- 添加2(颜色为红色)将违反红色父项下不允许红色子项的规则。红黑树上有3个案例:- 所有这三种情况都假设parentOf(newlyInsertedNode)有兄弟姐妹。但在我的

我不熟悉数据结构。我已经经历了红黑树插入算法的实现。我无法理解算法如何处理排序值的插入

让我用数据集[10,5,2]来说明

因此,将插入初始值10,它将是树的根,其颜色将为黑色。 十,

接下来,我们将在根10下添加5。5的颜色将是红色(到目前为止,它没有违反任何属性)。

现在,我们将添加2。添加后,树的外观如下所示:- 添加2(颜色为红色)将违反红色父项下不允许红色子项的规则。红黑树上有3个案例:-
所有这三种情况都假设parentOf(newlyInsertedNode)有兄弟姐妹。但在我的例子中,(2)=5的父母没有兄弟姐妹。因此,红黑树算法将如何处理这种情况。

红黑树的细节可能会因文章/书籍/实现的不同而有所不同

然而,有一种非常常见的变体被使用。在此变体中,有特殊的
NIL
子级。
NIL
子级包含一个特殊的“Null”键,表示它只是一个叶

RB树的不变量为:

  • 每个节点不是红色就是黑色
  • 根是黑色的
  • 每片叶子(
    NIL
    )都是黑色的
  • 如果节点为红色,则其两个子节点均为黑色
  • 对于每个节点,从节点到后代叶的所有简单路径都包含相同数量的黑色节点
  • 请特别注意,不变的3-
    NIL
    节点是黑色的


    使用此通用变量,RB树有4个附加节点:

  • 10岁的孩子

  • 5岁的孩子

  • 2的左右两个孩子

  • 5岁的孩子就是你失去的兄弟姐妹