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
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
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
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