@@ -542,8 +542,8 @@ def test_SplayTree():
542542 assert [node .key for node in in_order ] == [20 , 30 , 50 , 55 , 100 , 200 ]
543543 assert [node .key for node in pre_order ] == [200 , 55 , 50 , 30 , 20 , 100 ]
544544
545- def test_RedBlackTree ( ):
546- tree = RedBlackTree ()
545+ def _test_RedBlackTree ( backend ):
546+ tree = RedBlackTree (backend = backend )
547547 tree .insert (10 , 10 )
548548 tree .insert (18 , 18 )
549549 tree .insert (7 , 7 )
@@ -556,8 +556,9 @@ def test_RedBlackTree():
556556 tree .insert (2 , 2 )
557557 tree .insert (17 , 17 )
558558 tree .insert (6 , 6 )
559+ assert str (tree ) == "[(11, 10, 10, 3), (10, 18, 18, None), (None, 7, 7, None), (None, 15, 15, None), (0, 16, 16, 6), (None, 30, 30, None), (1, 25, 25, 7), (5, 40, 40, 8), (None, 60, 60, None), (None, 2, 2, None), (None, 17, 17, None), (9, 6, 6, 2)]"
559560
560- trav = BinaryTreeTraversal (tree )
561+ trav = BinaryTreeTraversal (tree , backend = backend )
561562 in_order = trav .depth_first_search (order = 'in_order' )
562563 pre_order = trav .depth_first_search (order = 'pre_order' )
563564 assert [node .key for node in in_order ] == [2 , 6 , 7 , 10 , 15 , 16 , 17 , 18 , 25 , 30 , 40 , 60 ]
@@ -583,7 +584,7 @@ def test_RedBlackTree():
583584 assert tree .upper_bound (60 ) is None
584585 assert tree .upper_bound (61 ) is None
585586
586- tree = RedBlackTree ()
587+ tree = RedBlackTree (backend = backend )
587588
588589 assert tree .lower_bound (1 ) is None
589590 assert tree .upper_bound (0 ) is None
@@ -606,10 +607,11 @@ def test_RedBlackTree():
606607 tree .insert (160 )
607608 tree .insert (170 )
608609 tree .insert (180 )
610+ assert str (tree ) == "[(None, 10, None, None), (0, 20, None, 2), (None, 30, None, None), (1, 40, None, 5), (None, 50, None, None), (4, 60, None, 6), (None, 70, None, None), (3, 80, None, 11), (None, 90, None, None), (8, 100, None, 10), (None, 110, None, None), (9, 120, None, 13), (None, 130, None, None), (12, 140, None, 15), (None, 150, None, None), (14, 160, None, 16), (None, 170, None, 17), (None, 180, None, None)]"
609611
610612 assert tree ._get_sibling (7 ) is None
611613
612- trav = BinaryTreeTraversal (tree )
614+ trav = BinaryTreeTraversal (tree , backend = backend )
613615 in_order = trav .depth_first_search (order = 'in_order' )
614616 pre_order = trav .depth_first_search (order = 'pre_order' )
615617 assert [node .key for node in in_order ] == [10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 90 ,
@@ -684,36 +686,42 @@ def test_RedBlackTree():
684686 assert [node .key for node in in_order if node .key is not None ] == []
685687 assert [node .key for node in pre_order if node .key is not None ] == []
686688
687- tree = RedBlackTree ()
689+ tree = RedBlackTree (backend = backend )
688690 tree .insert (50 )
689691 tree .insert (40 )
690692 tree .insert (30 )
691693 tree .insert (20 )
692694 tree .insert (10 )
693695 tree .insert (5 )
694696
695- trav = BinaryTreeTraversal (tree )
697+ trav = BinaryTreeTraversal (tree , backend = backend )
696698 in_order = trav .depth_first_search (order = 'in_order' )
697699 pre_order = trav .depth_first_search (order = 'pre_order' )
698700 assert [node .key for node in in_order ] == [5 , 10 , 20 , 30 , 40 , 50 ]
699701 assert [node .key for node in pre_order ] == [40 , 20 , 10 , 5 , 30 , 50 ]
700702
703+ assert tree .search (50 ) == 0
704+ assert tree .search (20 ) == 3
705+ assert tree .search (30 ) == 2
701706 tree .delete (50 )
702707 tree .delete (20 )
703708 tree .delete (30 )
709+ assert tree .search (50 ) is None
710+ assert tree .search (20 ) is None
711+ assert tree .search (30 ) is None
704712
705713 in_order = trav .depth_first_search (order = 'in_order' )
706714 pre_order = trav .depth_first_search (order = 'pre_order' )
707715 assert [node .key for node in in_order ] == [5 , 10 , 40 ]
708716 assert [node .key for node in pre_order ] == [10 , 5 , 40 ]
709717
710- tree = RedBlackTree ()
718+ tree = RedBlackTree (backend = backend )
711719 tree .insert (10 )
712720 tree .insert (5 )
713721 tree .insert (20 )
714722 tree .insert (15 )
715723
716- trav = BinaryTreeTraversal (tree )
724+ trav = BinaryTreeTraversal (tree , backend = backend )
717725 in_order = trav .depth_first_search (order = 'in_order' )
718726 pre_order = trav .depth_first_search (order = 'pre_order' )
719727 assert [node .key for node in in_order ] == [5 , 10 , 15 , 20 ]
@@ -726,15 +734,15 @@ def test_RedBlackTree():
726734 assert [node .key for node in in_order ] == [10 , 15 , 20 ]
727735 assert [node .key for node in pre_order ] == [15 , 10 , 20 ]
728736
729- tree = RedBlackTree ()
737+ tree = RedBlackTree (backend = backend )
730738 tree .insert (10 )
731739 tree .insert (5 )
732740 tree .insert (20 )
733741 tree .insert (15 )
734742 tree .insert (2 )
735743 tree .insert (6 )
736744
737- trav = BinaryTreeTraversal (tree )
745+ trav = BinaryTreeTraversal (tree , backend = backend )
738746 in_order = trav .depth_first_search (order = 'in_order' )
739747 pre_order = trav .depth_first_search (order = 'pre_order' )
740748 assert [node .key for node in in_order ] == [2 , 5 , 6 , 10 , 15 , 20 ]
@@ -746,3 +754,9 @@ def test_RedBlackTree():
746754 pre_order = trav .depth_first_search (order = 'pre_order' )
747755 assert [node .key for node in in_order ] == [2 , 5 , 6 , 15 , 20 ]
748756 assert [node .key for node in pre_order ] == [6 , 5 , 2 , 20 , 15 ]
757+
758+ def test_RedBlackTree ():
759+ _test_RedBlackTree (Backend .PYTHON )
760+
761+ def test_cpp_RedBlackTree ():
762+ _test_RedBlackTree (Backend .CPP )
0 commit comments