def test_color_node():
    c_node = ColorNode(1, color=Color.RED)
    assert c_node.color == Color.RED
    c_node.color = Color.BLACK
    assert c_node.color == Color.BLACK
    assert c_node.val == 1
    assert c_node.left == None
    assert c_node.right == None
Esempio n. 2
0
    def _flip_color(self, node: ColorNode) -> None:
        """
        Flip the color of the node and its children.
        """
        if node.color == Color.RED:
            node.color = Color.BLACK
        else:
            node.color = Color.RED

        if node.left.color == Color.RED:
            node.left.color = Color.BLACK
        else:
            node.left.color = Color.RED

        if node.right.color == Color.RED:
            node.right.color = Color.BLACK
        else:
            node.right.color = Color.RED
Esempio n. 3
0
 def _rotate_right(self, node: ColorNode) -> ColorNode:
     """
     The node's left child is red. Perform right-rotation to make the node's right child red.
     """
     x = node.left
     node.left = x.right
     x.right = node
     x.color = node.color
     node.color = Color.RED
     return x
Esempio n. 4
0
 def _rotate_left(self, node: ColorNode) -> ColorNode:
     """
     The node's right child is red. Perform left-rotation to comply red-left-leaning rule.
     """
     x = node.right
     node.right = x.left
     x.left = node
     x.color = node.color
     node.color = Color.RED
     return x