红黑树插入问题为什么旋转?

时间:2013-05-08 06:10:50

标签: red-black-tree

所以我有一个红黑树如下:

2 = Root Black
Children = 1 (Black/Left), 4 (Red/Right)
Children of 1 = NIL & NIL => Height of Black Subtree is then 2 
Children of 4 = 3 (Black/Left), 5 (Black/Right)
Children of 3 = NIL & NIL, Height of Black Subtree is then 2 
Children of 5 = 7 (Red/Right)& NIL, Height is still then of course 2. 

所以当我插入6(当然颜色是红色)并且它是7的左边孩子。在我关注的这个网络应用程序中,它在6上用7进行轮换。为什么?从我所看到的,它似乎没有违反RBT的任何属性。

注意:源Web应用程序是一个需要1.7的Java Web应用程序 资料来源:http://gauss.ececs.uc.edu/RedBlackTester/redblack.html

1 个答案:

答案 0 :(得分:3)

RBT的属性是。

  1. 每个节点都是红色或黑色。
  2. 根和叶(NIL)是黑色的。
  3. 如果节点为红色,则其父节点为黑色。
  4. 从任何节点x到a的所有简单路径 后代的叶子有相同的数字 黑色节点=黑色高度(x)。
  5. 因此,如果7是红色,并且当添加6时它也是红色,这违反了第3个属性,因此轮换并更改以删除违规。