Beispiel #1
0
def main():
    """ Main driver function to test binary search. """
    test = BinarySearchTree()
    test.add(21)
    test.add(26)
    test.add(30)
    test.add(9)
    test.add(4)
    test.add(14)
    test.add(28)
    test.add(18)
    test.add(15)
    test.add(10)
    test.add(2)
    test.add(3)
    test.add(7)

    preorder = test.preorder()
    for item in preorder:
        print(str(item) + ", ", end=" ")
    print("")
    print(test)
    print("Lonsg string so I can see the test height: ", test.height())

    test.remove(21)
    test.remove(9)
    test.remove(4)
    test.remove(18)
    test.remove(15)
    test.remove(7)
    print(test)

    bst = BinarySearchTree()
    print("Produced: ", bst.height())
    print("Expects: ", -1)
    for i in range(511):
        bst.add(i)

    print("Produced: ", bst.height())
    print("Expects: ", 510)
    bst.rebalance_tree()
    print("Produced: ", bst.height())
    print("Expects: ", 8)

    newtest = BinarySearchTree()
    for i in range(7):
        newtest.add(i)
    newtest.rebalance_tree()
    print(newtest)

    lasttest = BinarySearchTree()
    lasttest.add(1)
    print("Added")
    lasttest.add(1)
Beispiel #2
0
    def test_delete(self):
        items = [4, 2, 6, 1, 3, 5, 7]
        bst = BinarySearchTree(items)
        bst.delete(1)
        assert bst.size == 6
        assert bst.root.left.left == None
        bst.delete(2)
        assert bst.size == 5
        assert bst.root.left.data == 3

        bst2 = BinarySearchTree(items)
        bst2.delete(4)
        assert bst2.size == 6
        assert bst2.root.data == 3
        assert bst2.root.left.right == None
 def test_search_with_7_items(self):
     # Create a complete binary search tree of 7 items in level-order
     items = [4, 2, 6, 1, 3, 5, 7]
     bst = BinarySearchTree(items)
     for item in items:
         assert bst.search(item) == item
     assert bst.search(8) is None
Beispiel #4
0
 def test03_to_List(self):
     binarytree = BinarySearchTree()
     binarytree.setData(10)
     binarytree.insert(17)
     binarytree.insert(16)
     binarytree.insert(14)
     self.assertEqual(binarytree.toList(), [10, 14, 16, 17])
Beispiel #5
0
 def test_find_nontrivial_tree(self):
     bst = BinarySearchTree()
     data = [20, 50, 1, 150, 42]
     for d in data:
         bst.insert(d)
     data.sort()
     self.assertEqual(bst.toList(), data)
 def test_search_with_7_strings(self):
     # Create a complete binary search tree of 7 items in level-order
     items = ['D', 'B', 'F', 'A', 'C', 'E', 'G']
     bst = BinarySearchTree(items)
     for item in items:
         assert bst.search(item) == item
     assert bst.search('H') is None
Beispiel #7
0
 def test_find_missing_Value(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=123)
     for datum in data:
         bst.add(datum)
     self.assertEqual(bst.find(401), None)
Beispiel #8
0
 def test_find_present_value(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=123)
     for datum in data:
         bst.add(datum)
     self.assertEqual(bst.find(data[0]).data, data[0])
Beispiel #9
0
def main():
    """ Main driver function to test binary search. """
    test = BinarySearchTree()
    test.add(21)
    test.add(26)
    test.add(30)
    test.add(9)
    test.add(4)
    test.add(14)
    test.add(28)
    test.add(18)
    test.add(15)
    test.add(10)
    test.add(2)
    test.add(3)
    test.add(7)

    preorder = test.preorder()
    for item in preorder:
        print(str(item) + ", ", end=" ")
    print("")
    print(test)

    test.remove(21)
    test.remove(9)
    test.remove(4)
    test.remove(18)
    test.remove(15)
    test.remove(7)
    print(test)
 def test_tree_size(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=123)
     for datum in data:
         bst.add(datum)
     self.assertEqual(len(bst), 123)
Beispiel #11
0
def main():
    """Main function"""
    tree = BinarySearchTree()
    tree.add(21)
    tree.add(26)
    tree.add(30)
    tree.add(9)
    tree.add(4)
    tree.add(14)
    tree.add(28)
    tree.add(18)
    tree.add(15)
    tree.add(10)
    tree.add(2)
    tree.add(3)
    tree.add(7)

    pre = tree.preorder()

    for item in pre:
        print(item, end=', ')

    print('')
    print(tree)

    tree.remove(21)
    tree.remove(9)
    tree.remove(4)
    tree.remove(18)
    tree.remove(15)
    tree.remove(7)

    print(tree)
 def test_init_with_list_of_strings(self):
     bst = BinarySearchTree(['B', 'A', 'C'])
     assert bst.root.data == 'B'
     assert bst.root.left.data == 'A'
     assert bst.root.right.data == 'C'
     assert bst.size == 3
     assert bst.is_empty() is False
 def test_tree_height(self):
     bst = BinarySearchTree()
     bst.add(123)
     self.assertEqual(bst.height(), 1)
     bst.add(12)
     bst.add(2)
     self.assertEqual(bst.height(), 3)
Beispiel #14
0
def main():
    """Driver function for a binary search tree."""
    bst = BinarySearchTree()
    data = [21, 26, 30, 9, 4, 14, 28, 18, 15, 10, 2, 3, 7]
    # data = [25, 50, 57, 100, 125, 150, 200]
    for i in data:
        bst.add(i)

    print('21, 9, 4, 2, 3, 7, 14, 10, 18, 15, 26, 30, 28,')
    bst.preorder()
    print(bst)

    # data2 = [21,9,4,18,15,7]
    # for i in data2:
    #     bst.remove(i)

    # bst.preorder()
    # print(bst)

    print('inorder: ', bst.inorder())
    print('Height: ', bst.height())
    print('Length: ', bst.__len__())
    bst.remove(14)
    bst.remove(7)
    bst.remove(9)
    print(bst.rebalance_tree())
    print('Height: ', bst.height())
    # bst.display()
    print('-=-=-')
    bst._is_balanced()
    print('------')
 def test_init_with_list(self):
     bst = BinarySearchTree([2, 1, 3])
     assert bst.root.data == 2
     assert bst.root.left.data == 1
     assert bst.root.right.data == 3
     assert bst.size == 3
     assert bst.is_empty() is False
Beispiel #16
0
 def test_find_nontrivial_tree(self):
     bst = BinarySearchTree()
     data = [20, 50, 1, 150, 42]
     for d in data:
         bst.insert(d)
     for d in data:
         self.assertEqual(bst.find(d).getData(), d)
 def test_init_with_list_of_tuples(self):
     bst = BinarySearchTree([(2, 'B'), (1, 'A'), (3, 'C')])
     assert bst.root.data == (2, 'B')
     assert bst.root.left.data == (1, 'A')
     assert bst.root.right.data == (3, 'C')
     assert bst.size == 3
     assert bst.is_empty() is False
 def test_insert_node_to_left(self):
     new_node = Node(3)
     bst = BinarySearchTree(new_node)
     left_node = Node(2)
     bst.insert(bst, left_node)
     self.assertEqual(bst.left.val, 2)
     bst.insert(bst, Node(1))
     self.assertEqual(bst.left.left.val, 1)
 def test_search_with_3_strings(self):
     # Create a complete binary search tree of 3 items in level-order
     items = ['B', 'A', 'C']
     bst = BinarySearchTree(items)
     assert bst.search('A') == 'A'
     assert bst.search('B') == 'B'
     assert bst.search('C') == 'C'
     assert bst.search('D') is None
 def test_recursive_add(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=20)
     rc.recursion_count = 0
     for datum in data:
         bst.add(datum)
     self.assertGreater(rc.recursion_count, 15)
 def test_remove(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 100), k=10)
     for datum in data:
         bst.add(datum)
     bst.remove(data[0])
     self.assertEqual(bst.find(data[0]), None)
Beispiel #22
0
 def test_insert_and_delete_tree(self):
     bst = BinarySearchTree(10)
     bst.insert(20)
     self.assertEqual(bst.size(), 2)
     bst = bst.delete(20)
     self.assertEqual(bst.size(), 1)
     bst = bst.delete(10)
     self.assertEqual(bst.size(), 0)
Beispiel #23
0
 def test_preorder_output(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=123)
     for datum in data:
         bst.add(datum)
     output = bst.preorder()
     self.assertEqual(output[0], data[0])
Beispiel #24
0
 def test_preorder_type(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=123)
     for datum in data:
         bst.add(datum)
     output = bst.preorder()
     self.assertTrue(isinstance(output, list))
 def test_insert_node_to_right(self):
     new_node = Node(3)
     bst = BinarySearchTree(new_node)
     right_node = Node(4)
     bst.insert(bst, right_node)
     self.assertEqual(bst.right.val, 4)
     bst.insert(bst, Node(5))
     self.assertEqual(bst.right.right.val, 5)
 def test_search_with_3_items(self):
     # Create a complete binary search tree of 3 items in level-order
     items = [2, 1, 3]
     bst = BinarySearchTree(items)
     assert bst.search(1) == 1
     assert bst.search(2) == 2
     assert bst.search(3) == 3
     assert bst.search(4) is None
Beispiel #27
0
 def test_delete_root_node(self):
     bst = BinarySearchTree(10)
     bst.insert(20)
     bst.insert(30)
     bst.insert(5)
     bst.insert(9)
     self.assertEqual(bst.size(), 5)
     bst = bst.delete(10)
     self.assertEqual(bst.size(), 4)
Beispiel #28
0
    def test_tree_height(self):
        bst = BinarySearchTree()
        self.assertEqual(bst.height(), -1)
        for i in range(511):
            bst.add(i)

        self.assertEqual(bst.height(), 510)
        bst.rebalance_tree()
        self.assertEqual(bst.height(), 8)
 def test_size(self):
     bst = BinarySearchTree()
     assert bst.size == 0
     bst.insert('B')
     assert bst.size == 1
     bst.insert('A')
     assert bst.size == 2
     bst.insert('C')
     assert bst.size == 3
Beispiel #30
0
def main():
    tree = BinarySearchTree()  # instantiating the BinarySearchTree to be used.

    for x in range(511):
        tree.add(3)

    tree.rebalance_tree()

    print(tree)