def test_left_rotation(self): """ Left rotation All nodes(Common case) Successfully N N | | (5) (7) / \ / \ / \ / \ 4 (7) -> (5) 8 / \ / \ / \ / \ 6 8 4 6 """ red_black_tree = RedBlackTree() red_black_tree.insert(5) red_black_tree.insert(4) red_black_tree.insert(7) red_black_tree.insert(6) red_black_tree.insert(8) node_to_rotate = red_black_tree.search(5) red_black_tree._left_rotation(node_to_rotate) new_left_node = red_black_tree.search(5) new_right_node = red_black_tree.search(7) assert new_right_node.parent is None assert new_right_node.right.val == 8 assert new_right_node.right.parent is new_right_node assert new_right_node.left is new_left_node assert new_left_node.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.val == 6 assert new_left_node.right.parent is new_left_node
def test_left_rotation_with_two_nodes(self): """ Left rotation Only two nodes Successfully N N | | (5) (10) / \ / \ / \ / \ N (10) -> (5) N / \ / \ / \ / \ N N N N """ red_black_tree = RedBlackTree() red_black_tree.insert(5) red_black_tree.insert(10) node_to_rotate = red_black_tree.search(5) red_black_tree._left_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 None assert new_right_node.right is None assert new_right_node.left is new_left_node assert new_left_node.parent is new_right_node assert new_left_node.right is None assert new_left_node.left is None
def test_left_rotation_with_one_node(self): """ Left 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._left_rotation(node_to_rotate) new_node = red_black_tree.search(5) assert new_node is node_to_rotate