Exemple #1
0
 RBNode <T> MoveRedLeft(RBNode <T> node)
 {
     node.ColorFlip();
     if (IsNodeRed(node.RightChild.LeftChild))
     {
         node.RightChild = node.RightChild.RotateRight();
         node            = node.RotateLeft();
         node.ColorFlip();
     }
     return(node);
 }
Exemple #2
0
 RBNode <T> Fixup(RBNode <T> node)
 {
     if (!IsNodeRed(node.LeftChild) && IsNodeRed(node.RightChild))
     {
         node = node.RotateLeft();
     }
     if (IsNodeRed(node.LeftChild) && IsNodeRed(node.LeftChild.LeftChild))
     {
         node = node.RotateRight();
     }
     if (IsNodeRed(node.LeftChild) && IsNodeRed(node.RightChild))
     {
         node.ColorFlip();
     }
     return(node);
 }