Exemplo n.º 1
0
def main():
    tree = BinaryTree(5)
    print(tree)
    tree + 3
    print(tree)
    tree + 7
    print(tree)
    tree + 1
    print(tree)
    print(repr(tree))
Exemplo n.º 2
0
def buildTree():
    r = BinaryTree('a')

    r.insertLeft('b')
    l = r.getLeftChild()
    l.insertRight('d')

    r.insertRight('c')
    ri = r.getRightChild()
    ri.insertLeft('e')
    ri.insertRight('f')

    return r
Exemplo n.º 3
0
 def setUp(self):
     self.bst = BinaryTree()
Exemplo n.º 4
0
class TestBinaryWithDuplicates(unittest.TestCase):
    def setUp(self):
        self.bst = BinaryTree()

    def tearDown(self):
        self.bst = None

    def test_duplicate(self):
        self.bst.add(88)
        self.bst.add(88)
        self.assertTrue(88 in self.bst)
        self.bst.remove(88)
        self.assertTrue(88 in self.bst)
        self.bst.remove(88)
        self.assertFalse(88 in self.bst)

    def test_range(self):
        match = [1, 5, 2, 6, 3, 7, 9, 8]
        for _ in match:
            self.bst.add(_)

        self.assertEqual(1, self.bst.getMin())
        self.assertEqual(9, self.bst.getMax())

    def test_iter(self):
        match = [1, 5, 2, 6, 3, 7, 9, 8]
        for _ in match:
            self.bst.add(_)

        compare = list(iter(self.bst))
        self.assertEqual(sorted(match), compare)

    def test_trial(self):
        num = 1000
        values = list(range(num))
        random.shuffle(values)
        for _ in values:
            self.bst.add(_)

        for _ in range(num):
            t = min(self.bst)
            self.bst.remove(t)
            self.assertFalse(t in self.bst)
Exemplo n.º 5
0
 def test_init(self):
     result = BinaryTree(5)
     self.assertEqual(len(result), 1)
     self.assertEqual(result.root.data, 5)
     self.assertEqual(result.root.left, None)
     self.assertEqual(result.root.right, None)
Exemplo n.º 6
0
 def test_add(self):
     result = BinaryTree(5)
     result + 3
     self.assertEqual(len(result), 2)
Exemplo n.º 7
0
 def setUp(self):
     self.tree = BinaryTree()
Exemplo n.º 8
0
class BinaryTreeTest(unittest.TestCase):
    def setUp(self):
        self.tree = BinaryTree()

    def test_root_node(self):
        """ a tree with a single node will have a root node with no children """
        self.tree.insert(6)
        self.assertEqual(str(self.tree.rootNode), str(6))

    def test_root_node_with_children(self):
        self.tree.insert(6)
        self.tree.insert(3) # should become rootNode's left child
        self.tree.insert(8) # should become rootNode's right child
        self.assertEqual(str(self.tree.rootNode.left_child), str(3))
        self.assertEqual(str(self.tree.rootNode.right_child), str(8))

    def populate_tree(self):
        self.tree.insert(6)
        self.tree.insert(3)
        self.tree.insert(8)
        self.tree.insert(5)
        self.tree.insert(2)
        self.tree.insert(7)
        self.tree.insert(11)

    def test_tree_with_three_levels(self):
        self.populate_tree()
        self.assertEqual(str(self.tree.rootNode.left_child.right_child), str(5))
        self.assertEqual(str(self.tree.rootNode.left_child.left_child), str(2))
        self.assertEqual(str(self.tree.rootNode.right_child.left_child), str(7))
        self.assertEqual(str(self.tree.rootNode.right_child.right_child), str(11))


    def test_tree_with_duplicate_value_insert(self):
        """ in the case of an insertion tie comparison test, child node becomes
        the right_child node of the parent with the same value.
        """
        self.tree.insert(6)
        self.tree.insert(3)
        self.tree.insert(8)
        self.tree.insert(8)
        self.tree.insert(10)
        self.assertEqual(str(self.tree.rootNode.right_child.right_child), str(8))
        # further nesting here.
        self.assertEqual(str(self.tree.rootNode.right_child.right_child.right_child), str(10))

    def test_search(self):
        self.populate_tree()

        self.assertEqual(str(self.tree.search(6)), str(self.tree.rootNode))
        self.assertEqual(str(self.tree.search(3)), str(self.tree.rootNode.left_child))
        self.assertEqual(str(self.tree.search(2)), str(self.tree.rootNode.left_child.left_child))
        self.assertEqual(str(self.tree.search(5)), str(self.tree.rootNode.left_child.right_child))
        self.assertEqual(str(self.tree.search(8)), str(self.tree.rootNode.right_child))

    def test_search_for_nonexistent_node(self):
        self.populate_tree()

        self.assertEqual(self.tree.search(77), None)

    @unittest.skip("not completed yet")
    def test_inorder_tree_walk(self):
        self.populate_tree()
        self.assertEqual(self.tree.inorder_tree_walk(), [2,3,5,6,7,8,11])

    def test_inorder_tree_walk_empty_tree(self):
        self.assertEqual(self.tree.inorder_tree_walk(), [])