Exemple #1
0
 def test_insert_three(self):
     T = rb_tree([41, 38, 31])
     self.assertEquals(T.root, T.iterative_tree_search(38))
     self.assertEquals(T.nil.color, 1)
     self.wrap(T, 38, 31, 41, -1, 1)
     self.wrap(T, 31, -1, -1, 38, 0)
     self.wrap(T, 41, -1, -1, 38, 0)
 def test_insert_three(self):
     T = rb_tree([41, 38, 31])
     self.assertEqual(T.root, T.iterative_tree_search(38))
     self.assertEqual(T.nil.color, 1)
     self.wrap(T, 38, 31, 41, -1, 1)
     self.wrap(T, 31, -1, -1, 38, 0)
     self.wrap(T, 41, -1, -1, 38, 0)
Exemple #3
0
 def test_tree_delete_color_2(self):
     print("\n")
     print("tree_left_rotation")
     tree = rb_tree()
     tree.insert(7)
     tree.insert(5)
     tree.insert(9)
     tree.insert(3)
     tree.insert(6)
     tree.insert(8)
     tree.insert(10)
     tree.insert(1)
     tree.insert(2)
     tree_preorder = [node.data for node in tree.preorder()]
     tree_preorder_color = [node.color for node in tree.preorder()]
     self.assertEqual(tree_preorder, [7, 5, 2, 1, 3, 6, 9, 8, 10])
     self.assertEqual(tree_preorder_color, [
         'black', 'red', 'black', 'red', 'red', 'black', 'black', 'red',
         'red'
     ])
     tree.delete(6)
     tree_preorder = [node.data for node in tree.preorder()]
     tree_preorder_color = [node.color for node in tree.preorder()]
     self.assertEqual(tree_preorder, [7, 2, 1, 5, 3, 9, 8, 10])
     self.assertEqual(
         tree_preorder_color,
         ['black', 'red', 'black', 'black', 'red', 'black', 'red', 'red'])
     tree.delete(7)
     tree_preorder = [node.data for node in tree.preorder()]
     tree_preorder_color = [node.color for node in tree.preorder()]
     self.assertEqual(tree_preorder, [8, 2, 1, 5, 3, 9, 10])
     self.assertEqual(
         tree_preorder_color,
         ['black', 'red', 'black', 'black', 'red', 'black', 'red'])
     print("\n")
Exemple #4
0
 def test_delete_two(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     T.delete(T.iterative_tree_search(9))
     T.delete(T.iterative_tree_search(12))
     self.wrap(T, 38, 19, 41, -1, 1)
     self.wrap(T, 19, -1, 31, 38, 1)
     self.wrap(T, 41, -1, -1, 38, 1)
     self.wrap(T, 31, -1, -1, 19, 0)
Exemple #5
0
 def test_delete_five(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     T.delete(T.iterative_tree_search(9))
     T.delete(T.iterative_tree_search(12))
     T.delete(T.iterative_tree_search(19))
     T.delete(T.iterative_tree_search(31))
     T.delete(T.iterative_tree_search(38))
     self.wrap(T, 41, -1, -1, -1, 1)
 def test_delete_five(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     T.delete(T.iterative_tree_search(9))
     T.delete(T.iterative_tree_search(12))
     T.delete(T.iterative_tree_search(19))
     T.delete(T.iterative_tree_search(31))
     T.delete(T.iterative_tree_search(38))
     self.wrap(T, 41, -1, -1, -1, 1)
Exemple #7
0
 def test_insert_four(self):
     T = rb_tree([41, 38, 31, 12])
     self.assertEquals(T.root, T.iterative_tree_search(38))
     self.assertEquals(T.nil.color, 1)
     self.wrap(T, 38, 31, 41, -1, 1)
     self.wrap(T, 31, 12, -1, 38, 1)
     self.wrap(T, 41, -1, -1, 38, 1)
     self.wrap(T, 12, -1, -1, 31, 0)
 def test_delete_two(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     T.delete(T.iterative_tree_search(9))
     T.delete(T.iterative_tree_search(12))
     self.wrap(T, 38, 19, 41, -1, 1)
     self.wrap(T, 19, -1, 31, 38, 1)
     self.wrap(T, 41, -1, -1, 38, 1)
     self.wrap(T, 31, -1, -1, 19, 0)
 def test_delete_six(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     T.delete(T.iterative_tree_search(9))
     T.delete(T.iterative_tree_search(12))
     T.delete(T.iterative_tree_search(19))
     T.delete(T.iterative_tree_search(31))
     T.delete(T.iterative_tree_search(38))
     T.delete(T.iterative_tree_search(41))
     self.assertEqual(T.root, T.nil)
Exemple #10
0
 def test_delete_six(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     T.delete(T.iterative_tree_search(9))
     T.delete(T.iterative_tree_search(12))
     T.delete(T.iterative_tree_search(19))
     T.delete(T.iterative_tree_search(31))
     T.delete(T.iterative_tree_search(38))
     T.delete(T.iterative_tree_search(41))
     self.assertEquals(T.root, T.nil)
Exemple #11
0
 def test_insert_six(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     self.assertEqual(T.root, T.iterative_tree_search(38))
     self.assertEqual(T.nil.color, 1)
     self.wrap(T, 38, 19, 41, -1, 1)
     self.wrap(T, 19, 12, 31, 38, 0)
     self.wrap(T, 41, -1, -1, 38, 1)
     self.wrap(T, 12, 9, -1, 19, 1)
     self.wrap(T, 31, -1, -1, 19, 1)
     self.wrap(T, 9, -1, -1, 12, 0)
Exemple #12
0
 def test_insert_six(self):
     T = rb_tree([41, 38, 31, 12, 19, 9])
     self.assertEquals(T.root, T.iterative_tree_search(38))
     self.assertEquals(T.nil.color, 1)
     self.wrap(T, 38, 19, 41, -1, 1)
     self.wrap(T, 19, 12, 31, 38, 0)
     self.wrap(T, 41, -1, -1, 38, 1)
     self.wrap(T, 12, 9, -1, 19, 1)
     self.wrap(T, 31, -1, -1, 19, 1)
     self.wrap(T, 9, -1, -1, 12, 0)
Exemple #13
0
 def test_tree_left_rotation_1(self):
     print("\n")
     print("tree_left_rotation_1")
     tree = rb_tree()
     tree.bst_insert(2)
     tree.bst_insert(1)
     tree.bst_insert(3)
     tree.print()
     print("intial prorder tree", "\n")
     tree.left_rotate(tree.root)
     tree_preorder = [node.data for node in tree.preorder()]
     self.assertEqual(tree_preorder, [3, 2, 1])
     tree.print()
     print("tree after left rotation about root  in prorder")
     print("\n")
Exemple #14
0
    def test_tree_insert_color_1(self):
        print("\n")
        print("tree_color_check_1")
        # print("checking in order, preorder and post order")
        tree = rb_tree()

        for i in range(1, 8):
            tree.insert(i)
        tree.print()
        tree_preorder = [node.data for node in tree.preorder()]
        tree_preorder_color = [node.color for node in tree.preorder()]
        self.assertEqual(tree_preorder, [2, 1, 4, 3, 6, 5, 7])
        self.assertEqual(
            tree_preorder_color,
            ['black', 'black', 'red', 'black', 'black', 'red', 'red'])
        print("\n")
Exemple #15
0
    def test_tree_insert_color_0(self):
        print("\n")
        print("tree_color_check_0")
        # print("checking in order, preorder and post order")
        tree = rb_tree()

        tree.insert(2)
        tree.insert(1)
        tree.insert(3)
        tree.insert(4)
        tree.print()
        tree_preorder = [node.data for node in tree.preorder()]
        tree_preorder_color = [node.color for node in tree.preorder()]
        self.assertEqual(tree_preorder, [2, 1, 3, 4])
        self.assertEqual(tree_preorder_color,
                         ['black', 'black', 'black', 'red'])
        print("\n")
Exemple #16
0
 def test_tree_right_rotation_2(self):
     print("\n")
     print("tree_right_rotation_2")
     tree = rb_tree()
     tree.bst_insert(7)
     tree.bst_insert(5)
     tree.bst_insert(9)
     tree.bst_insert(3)
     tree.bst_insert(6)
     tree.bst_insert(8)
     tree.bst_insert(10)
     tree.bst_insert(1)
     tree.bst_insert(2)
     tree.print()
     print("intial prorder tree", "\n")
     tree.right_rotate(tree.root)
     tree_preorder = [node.data for node in tree.preorder()]
     self.assertEqual(tree_preorder, [5, 3, 1, 2, 7, 6, 9, 8, 10])
     tree.print()
     print("tree after right rotation about root  in prorder")
     print("\n")
Exemple #17
0
 def test_tree_left_rotation_3(self):
     print("\n")
     print("tree_left_rotation_3")
     tree = rb_tree()
     tree.bst_insert(7)
     tree.bst_insert(5)
     tree.bst_insert(9)
     tree.bst_insert(3)
     tree.bst_insert(6)
     tree.bst_insert(8)
     tree.bst_insert(10)
     tree.bst_insert(1)
     tree.bst_insert(2)
     tree.print()
     print("intial prorder tree", "\n")
     tree.left_rotate(tree.root.right)
     tree_preorder = [node.data for node in tree.preorder()]
     self.assertEqual(tree_preorder, [7, 5, 3, 1, 2, 6, 10, 9, 8])
     tree.print()
     print("tree after left rotation about root  in prorder")
     print("\n")
Exemple #18
0
    def test_tree_delete_0(self):
        print("\n")
        print("tree_insert")
        print("checking in order, preorder and post order")
        tree = rb_tree()

        tree.insert(7)
        tree.insert(5)
        tree.insert(9)
        tree.insert(6)
        tree_preorder = [node.data for node in tree.preorder()]
        tree_preorder_color = [node.color for node in tree.preorder()]
        self.assertEqual(tree_preorder, [7, 5, 6, 9])
        self.assertEqual(tree_preorder_color,
                         ['black', 'black', 'red', 'black'])
        tree.delete(9)
        tree_preorder = [node.data for node in tree.preorder()]
        tree_preorder_color = [node.color for node in tree.preorder()]
        self.assertEqual(tree_preorder, [6, 5, 7])
        self.assertEqual(tree_preorder_color, ['black', 'black', 'black'])
        print("\n")
    #fix imports because I am using some utility from other packages
    import sys
    from os import path
    sys.path.append( path.dirname( path.dirname( path.abspath(__file__) ) ) )

    from sorting.utils import generate
    from bst import bst_tree
    from rb_tree import rb_tree
    from avl_tree import avl_tree

    #tree visits
    from tree_algo import tree_visit_in_order, tree_visit_pre_order, tree_visit_post_order, tree_visit_level_order

    #tree statistc orders
    from tree_algo import tree_min, tree_max, tree_floor, tree_ceiling, tree_rank, tree_select, tree_size

    bst = bst_tree()
    rb = rb_tree()
    avl = avl_tree()

    #testing bst
    print("---------------------")
    test_tree( bst )
    #testing rb_tree
    print("----------------------")
    test_tree( rb )
    #test avl tree
    print("-----------------------")
    test_tree( avl )

Exemple #20
0
 def test_insert_one(self):
     T = rb_tree([41])
     print(T.root.iterative_tree_search(41).p.key)
     self.assertEqual(T.root, T.root.iterative_tree_search(41))
     self.assertEqual(T.nil.color, 1)
     self.wrap(T, 41, -1, -1, -1, 1)
Exemple #21
0
 def test_insert_two(self):
     T = rb_tree([41, 38])
     self.assertEqual(T.root, T.iterative_tree_search(41))
     self.assertEqual(T.nil.color, 1)
     self.wrap(T, 41, 38, -1, -1, 1)
     self.wrap(T, 38, -1, -1, 41, 0)
Exemple #22
0
 def test_insert_one(self):
     T = rb_tree([41])
     print T.root.iterative_tree_search(41).p.key
     self.assertEquals(T.root, T.root.iterative_tree_search(41))
     self.assertEquals(T.nil.color, 1)
     self.wrap(T, 41, -1, -1, -1, 1)