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 #2
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 #3
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 #4
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_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)
 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)
Beispiel #7
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 #8
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))
Beispiel #9
0
 def grade(self, array):
     bst = BinarySearchTree()
     for i in array:
         bst.add(i)
     array = sorted(array)
     ptr = 0
     for i in bst:
         self.assertEqual(i, array[ptr])
         ptr += 1
Beispiel #10
0
def main():
    tree = BinarySearchTree()  # instantiating the BinarySearchTree to be used.

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

    tree.rebalance_tree()

    print(tree)
Beispiel #11
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_preorder(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=123)
     for datum in data:
         bst.add(datum)
     output = bst.preorder(bst.root)
     self.assertTrue(isinstance(output, list))
     self.assertEqual(len(output), 123)
     self.assertEqual(output[0], data[0])
Beispiel #13
0
    def test_inorder(self):
        bst = BinarySearchTree()
        seed(0)
        data = sample(range(1, 4000), k=126)
        for x in data:
            bst.add(x)

        data.sort()
        tree_data = list(bst.inorder())
        self.assertEqual(data, tree_data)
 def test_recursive_length(self):
     bst = BinarySearchTree()
     seed(0)
     data = sample(range(1, 400), k=20)
     rc.recursion_count = 0
     for datum in data:
         bst.add(datum)
     rc.recursion_count = 0
     len(bst)
     self.assertGreaterEqual(rc.recursion_count, 0)
Beispiel #15
0
def main():
    '''main'''

    data = [21, 26, 30, 9, 4, 14, 28, 18, 15, 10, 2, 3, 7]
    remove_data = [21, 9, 4, 18, 15, 7]

    tree = BinarySearchTree()
    for i in range(511):
        tree.add(i)

    tree.rebalance_tree()
Beispiel #16
0
def main():
    """
    Main function
    """
    node = BinarySearchTree()
    arr = [21, 26, 30, 9, 4, 14, 28, 18, 15, 10, 2, 3, 7]
    for _, value in enumerate(arr):
        node.add(value)

    print(node.preorder(node.root))
    print(node.height())
Beispiel #17
0
def main():
    """Function to run the binary search tree"""
    bst = BinarySearchTree()
    lyst = [21, 26, 30, 9, 4, 14, 28, 18, 15, 10, 2, 3, 7]
    for i in lyst:
        bst.add(i)
    print(bst.preorder())
    print(bst)
    rem_lyst = [21, 9, 4, 18, 15, 7]
    for i in rem_lyst:
        bst.remove(i)
    print(bst)
Beispiel #18
0
    def test_rebalance(self):
        bst = BinarySearchTree()
        seed(0)
        data = sample(range(1, 4000), k=126)
        data.sort()
        for x in data:
            bst.add(x)
        original_height = bst.height()
        self.assertEqual(data[0], bst.root.data)

        bst.rebalance_tree()
        tree_data = list(bst.inorder())
        self.assertEqual(data, tree_data)
        self.assertNotEqual(original_height, bst.height())
Beispiel #19
0
def main():
    '''main'''

    data = [21, 26, 30, 9, 4, 14, 28, 18, 15, 10, 2, 3, 7]
    remove_data = [21, 9, 4, 18, 15, 7]

    tree = BinarySearchTree()
    tree.add(data)

    print(str(tree.preorder())[1:-1])
    print(tree)

    tree.remove(remove_data)

    print(tree)
Beispiel #20
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]
    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)
Beispiel #21
0
def main():
    """
    Main function. Creates BST, puts in preorder form
    prints list then goes through bst and prints all data.
    """
    bst = BinarySearchTree()
    for i in range(11):
        bst.add(i)
    bst.rebalance_tree()
    preorder = bst.preorder()
    output = ''
    for node_data in preorder:
        output += str(node_data)
        output += ', '
    print(output)
    str(bst)
    removevals = [21, 9, 4, 18, 15, 7]
    for remove in removevals:
        bst.remove(remove)
    str(bst)
Beispiel #22
0
def main():
    """
    Main function. Creates BST, puts in preorder form
    prints list then goes through bst and prints all data.
    """
    bst = BinarySearchTree()
    addvals = [21, 26, 30, 9, 4, 14, 28, 18, 15, 10, 2, 3, 7]
    for add in addvals:
        bst.add(add)
    preordered_bst = bst.preorder()
    output = ''
    for node_data in preordered_bst:
        output += str(node_data)
        output += ', '
    print(output)
    str(bst)
    removevals = [21, 9, 4, 18, 15, 7]
    for remove in removevals:
        bst.remove(remove)
    str(bst)
 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 #24
0
def main():
    '''Driver for program'''
    tree = BinarySearchTree()
    for val in VALUES:
        tree.add(val)

    for item in tree.preorder():
        print(item, end=", ")
    print("\n")
    print(tree)

    for item in tree.inorder():
        print(item, end=", ")

    tree.rebalance_tree()
    print("\n")
    for item in tree.inorder():
        print(item, end=", ")

    print("\n")
    print(tree)
    x = BinarySearchTree()
    print(x.height())
Beispiel #25
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)
Beispiel #26
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)
#!/usr/bin/env python3

import random

from binarysearchtree import BinarySearchTree

min = 0
max = 100
size = 10
array = [random.randint(min, max) for x in range(0, size)]
print(array)
bst = BinarySearchTree()

for element in array:
    bst.add(element)

elementToFind = array[random.randint(0, len(array) - 1)]
node = bst.find(elementToFind)
keyLargerThanK = bst.keyLargerThanK(elementToFind)
if node is not None:
    print(node.getData())
    if keyLargerThanK is not None:
        print("key larger than " + str(elementToFind) + " : " + str(keyLargerThanK.getData()))
    else:
        print("larger element not found")
else:
    print(str(elementToFind) + " not found")
Beispiel #28
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 #29
0
from binarysearchtree import BinarySearchTree

bst = BinarySearchTree()
lyst = [1, 2, 3, 4, 5, 6, 7, 8]
for i in lyst:
    bst.add(i)
#print(bst)
bst.add(0)
bst.add(-6)
bst.add(-3)

bst.rebalance_tree()
print(bst)