def test_right_rotation(self): """ Right rotation All nodes(Common case) Successfully N N | | (8) (6) / \ / \ / \ / \ (6) 9 -> 4 (8) / \ / \ / \ / \ 4 7 7 9 """ red_black_tree = RedBlackTree() red_black_tree.insert(8) red_black_tree.insert(9) red_black_tree.insert(6) red_black_tree.insert(4) red_black_tree.insert(7) node_to_rotate = red_black_tree.search(8) red_black_tree._right_rotation(node_to_rotate) new_left_node = red_black_tree.search(6) new_right_node = red_black_tree.search(8) assert new_right_node.parent is new_left_node assert new_right_node.right.val == 9 assert new_right_node.right.parent is new_right_node assert new_right_node.left.val == 7 assert new_right_node.left.parent is new_right_node assert new_left_node.left.val == 4 assert new_left_node.left.parent is new_left_node assert new_left_node.right is new_right_node
def test_right_rotation_with_two_nodes(self): """ Right rotation Only two nodes Successfully N N | | (10) (5) / \ / \ / \ / \ (5) N -> N (10) / \ / \ / \ / \ N N N N """ red_black_tree = RedBlackTree() red_black_tree.insert(10) red_black_tree.insert(5) node_to_rotate = red_black_tree.search(10) red_black_tree._right_rotation(node_to_rotate) new_left_node = red_black_tree.search(5) new_right_node = red_black_tree.search(10) assert new_right_node.parent is new_left_node assert new_right_node.right is None assert new_right_node.left is None assert new_left_node.parent is None assert new_left_node.right is new_right_node assert new_left_node.left is None
def test_right_rotation_with_one_node(self): """ Right rotation Only one node Successfully N N | | (5) -> (5) / \ / \ / \ / \ (N) N (N) N """ red_black_tree = RedBlackTree() red_black_tree.insert(5) node_to_rotate = red_black_tree.search(5) red_black_tree._right_rotation(node_to_rotate) new_node = red_black_tree.search(5) assert new_node is node_to_rotate