예제 #1
0
class testInOrder(unittest.TestCase):

    def setUp(self):
        self.my_bst = BSTree()
        self.filled_tree = BSTree()
        self.filled_tree.insert(5)
        self.filled_tree.insert(3)
        self.filled_tree.insert(6)
        self.filled_tree.insert(8)
        self.filled_tree.insert(11)
        self.filled_tree.insert(2)
        self.filled_tree.insert(9)
        # i just realized how unbalanced that tree is. bad design on my part.
        # i'll fix it for the following.
        self.number_catcher = []

    def test_in_order_on_empty_bst(self):
        for i in self.my_bst.in_order():
            self.number_catcher.append(i)
        self.assertEqual(self.number_catcher, [None])

    def test_in_order_on_filled_bst(self):
        for i in self.filled_tree.in_order():
            self.number_catcher.append(i)
        self.assertEqual(self.number_catcher, [2, 3, 5, 6, 8, 9, 11])
예제 #2
0
class testInOrder(unittest.TestCase):
    def setUp(self):
        self.my_bst = BSTree()
        self.filled_tree = BSTree()
        self.filled_tree.insert(5)
        self.filled_tree.insert(3)
        self.filled_tree.insert(6)
        self.filled_tree.insert(8)
        self.filled_tree.insert(11)
        self.filled_tree.insert(2)
        self.filled_tree.insert(9)
        # i just realized how unbalanced that tree is. bad design on my part.
        # i'll fix it for the following.
        self.number_catcher = []

    def test_in_order_on_empty_bst(self):
        for i in self.my_bst.in_order():
            self.number_catcher.append(i)
        self.assertEqual(self.number_catcher, [None])

    def test_in_order_on_filled_bst(self):
        for i in self.filled_tree.in_order():
            self.number_catcher.append(i)
        self.assertEqual(self.number_catcher, [2, 3, 5, 6, 8, 9, 11])
예제 #3
0
class testNodeDeletion(unittest.TestCase):

    def setUp(self):
        self.my_bst = BSTree()

        self.solo_tree = BSTree()
        self.solo_tree.insert(10)

        self.left_tree = BSTree()
        self.left_tree.insert(10)
        self.left_tree.insert(5)

        self.right_tree = BSTree()
        self.right_tree.insert(10)
        self.right_tree.insert(15)

        self.filled_tree = BSTree()
        self.filled_tree.insert(10)
        self.filled_tree.insert(5)
        self.filled_tree.insert(15)
        self.filled_tree.insert(2)
        self.filled_tree.insert(12)
        self.filled_tree.insert(7)
        self.filled_tree.insert(17)
        self.filled_tree.insert(1)
        self.filled_tree.insert(4)
        self.filled_tree.insert(6)
        self.filled_tree.insert(9)
        self.filled_tree.insert(11)
        self.filled_tree.insert(14)
        self.filled_tree.insert(16)
        self.filled_tree.insert(23)

    def test_delete_on_empty_tree(self):
        self.assertEqual(self.my_bst.delete(7), None)

    def test_delete_on_one_node_tree(self):
        catcher = []
        self.solo_tree.delete(10)
        for i in self.solo_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher, [None])

    def test_delete_on_node_with_left_only(self):
        catcher = []
        self.left_tree.delete(10)
        for i in self.left_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher, [5])

    def test_delete_on_node_with_right_only(self):
        catcher = []
        self.right_tree.delete(10)
        for i in self.right_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher, [15])

    def test_delete_for_value_that_doesnt_appear(self):
        catcher = []
        self.filled_tree.delete(18)
        for i in self.filled_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher, [10, 5, 15, 2, 7, 12, 17, 1, 4, 6, 9, 11, 14,
                                   16, 23])
예제 #4
0
class testNodeDeletion(unittest.TestCase):
    def setUp(self):
        self.my_bst = BSTree()

        self.solo_tree = BSTree()
        self.solo_tree.insert(10)

        self.left_tree = BSTree()
        self.left_tree.insert(10)
        self.left_tree.insert(5)

        self.right_tree = BSTree()
        self.right_tree.insert(10)
        self.right_tree.insert(15)

        self.filled_tree = BSTree()
        self.filled_tree.insert(10)
        self.filled_tree.insert(5)
        self.filled_tree.insert(15)
        self.filled_tree.insert(2)
        self.filled_tree.insert(12)
        self.filled_tree.insert(7)
        self.filled_tree.insert(17)
        self.filled_tree.insert(1)
        self.filled_tree.insert(4)
        self.filled_tree.insert(6)
        self.filled_tree.insert(9)
        self.filled_tree.insert(11)
        self.filled_tree.insert(14)
        self.filled_tree.insert(16)
        self.filled_tree.insert(23)

    def test_delete_on_empty_tree(self):
        self.assertEqual(self.my_bst.delete(7), None)

    def test_delete_on_one_node_tree(self):
        catcher = []
        self.solo_tree.delete(10)
        for i in self.solo_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher, [None])

    def test_delete_on_node_with_left_only(self):
        catcher = []
        self.left_tree.delete(10)
        for i in self.left_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher, [5])

    def test_delete_on_node_with_right_only(self):
        catcher = []
        self.right_tree.delete(10)
        for i in self.right_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher, [15])

    def test_delete_for_value_that_doesnt_appear(self):
        catcher = []
        self.filled_tree.delete(18)
        for i in self.filled_tree.in_order():
            catcher.append(i)
        self.assertEqual(catcher,
                         [10, 5, 15, 2, 7, 12, 17, 1, 4, 6, 9, 11, 14, 16, 23])