Beispiel #1
0
    def testRemoveValueWithTwoChildren(self):
        tree = BST()
        tree.add_value(300)
        tree.add_value(250)
        tree.add_value(500)
        tree.add_value(225)
        tree.add_value(275)

        otherTree = BST()
        otherTree.add_value(275)
        otherTree.add_value(250)
        otherTree.add_value(500)
        otherTree.add_value(225)

        # tree.printPreorder(root=tree.root)
        # print(tree.__len__()) ## should print 13
        #
        tree.remove_value(300)
        # print()
        # tree.printPreorder(root=tree.root)
        # print(tree.__len__()), ## should print 12

        self.assertEqual(tree, otherTree)
        # treeLength =
        self.assertEqual(tree.__len__(), otherTree.__len__())
Beispiel #2
0
 def test_remove_root_nochildren(self):
     tree = BST()
     tree.add_value(100)
     #print("tree length:",len(tree))
     tree.remove_value(100)
     #print("tree length after:",len(tree))
     self.assertEqual(0, len(tree))
Beispiel #3
0
 def test_len(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertEqual(tree.get_max_node().value, 200)
     self.assertEqual(len(tree), 5)
     tree.remove_value(80)
     self.assertEqual(len(tree), 4)
     tree.remove_value(200)
     self.assertEqual(len(tree), 3)
     self.assertEqual(tree.get_max_node().value, 100)
Beispiel #4
0
    def test_remove_root_with_two_children(self):
        tree = BST()
        fill_int_tree(tree)
        tree.remove_value(100)

        root = BSTNode(200)
        root.left = BSTNode(80)
        root.left.left = BSTNode(70)
        root.left.right = BSTNode(90)

        cmp_tree = BST(root)
        self.assertEqual(tree, cmp_tree)
Beispiel #5
0
 def test_remove_value_len(self):
     tree = BST()
     tree.add_value(100)
     tree.add_value(80)
     tree.add_value(90)
     tree.add_value(200)
     tree.add_value(70)
     #print(len(tree))
     tree.remove_value(80)
     #print(len(tree))
     #tree.print_tree()
     self.assertEqual(4, len(tree))
Beispiel #6
0
    def testRemoveValueWithNoChildrenXD(self):
        tree = BST()
        tree.add_value(250)
        tree.add_value(225)
        tree.add_value(275)

        otherTree = BST()
        otherTree.add_value(250)
        otherTree.add_value(275)

        # remove a left leaf
        tree.remove_value(225)
        self.assertEqual(tree, otherTree)
Beispiel #7
0
    def testRemoveValueWithOneChildRightSide(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(50)
        tree.add_value(125)
        tree.add_value(200)

        otherTree = BST()
        otherTree.add_value(100)
        otherTree.add_value(50)
        otherTree.add_value(200)

        # remove value 125 from tree and compare to otherTree
        tree.remove_value(125)

        self.assertEqual(tree, otherTree)
Beispiel #8
0
    def testRemoveValueWithNoChildren(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(50)
        tree.add_value(125)
        tree.add_value(200)

        otherTree = BST()
        otherTree.add_value(100)
        otherTree.add_value(50)
        otherTree.add_value(125)

        # remove a leaf node (a node with no children)
        tree.remove_value(200)

        self.assertEqual(tree, otherTree)
Beispiel #9
0
    def test_delete_4(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(80)
        tree.add_value(200)
        tree.add_value(300)
        tree.add_value(150)

        tree.remove_value(200)

        root = BSTNode(100)
        root.left = BSTNode(80)
        root.right = BSTNode(150)
        root.right.right = BSTNode(300)

        cmp_tree = BST(root)
        self.assertEqual(tree, cmp_tree)
Beispiel #10
0
    def testRemoveValueInnerNodeWithTwoChildren(self):
        # removing an inner node with two children- node with a value of 250
        tree = BST()
        tree.add_value(300)
        tree.add_value(250)
        tree.add_value(500)
        tree.add_value(225)
        tree.add_value(275)

        otherTree = BST()
        otherTree.add_value(300)
        otherTree.add_value(500)
        otherTree.add_value(225)
        otherTree.add_value(275)

        tree.remove_value(250)

        self.assertEqual(tree, otherTree)
Beispiel #11
0
    def test_remove_left_child(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(80)
        tree.add_value(200)
        tree.add_value(90)
        tree.add_value(70)

        tree.remove_value(200)
        results = []
        values = []
        tree.inorder(results)

        for x in results:
            value = x.value
            values.append(value)

        self.assertEqual(values, [70, 80, 90, 100])
Beispiel #12
0
    def test_remove_value(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(80)
        tree.add_value(90)
        tree.add_value(200)
        tree.add_value(70)
        tree.remove_value(80)
        #tree.print_tree()

        #.left.right stuff that butner did in his test cases for other tree
        othertree = BST()
        othertree.add_value(100)
        othertree.add_value(70)
        othertree.add_value(200)
        othertree.add_value(90)
        #othertree.print_tree()
        self.assertEqual(tree, othertree)
    def test_remove_both_children(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(80)
        tree.add_value(200)
        tree.add_value(90)
        tree.add_value(95)
        tree.add_value(70)
        tree.add_value(75)
        tree.add_value(150)

        tree.remove_value(80)
        results = []
        values = []
        tree.inorder(results)

        for x in results:
            value = x.value
            values.append(value)

        self.assertEqual(values, [70, 75, 90, 95, 100, 150, 200])
Beispiel #14
0
    def testRemoveValueWeirdTree(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(50)
        tree.add_value(150)
        tree.add_value(125)
        tree.add_value(120)
        tree.add_value(125)
        tree.add_value(127)
        tree.add_value(126)

        otherTree = BST()
        otherTree.add_value(100)
        otherTree.add_value(50)
        otherTree.add_value(150)
        otherTree.add_value(125)
        otherTree.add_value(120)
        otherTree.add_value(125)
        otherTree.add_value(126)

        # remove 127 from tree
        tree.remove_value(127)
        self.assertEqual(tree, otherTree)
Beispiel #15
0
 def test_remove_empty(self):
     tree = BST()
     with self.assertRaises(EmptyTreeError):
         tree.remove_value(70)
Beispiel #16
0
    c = BSTNode(35)
    d = BSTNode(37)
    e = BSTNode(45)
    f = BSTNode(90)

    a.left = b
    b.left = c 
    c.right = d
    b.right = e

    print ( "create tree with 5 nodes")
    tree = BST(a)
    print ("len ex 5: ", len(tree))
    print ("add node", tree.add_value(100))
    print ("len ex 6: ", len(tree))
    print ("remove node", tree.remove_value(50))
    print ("len ex 5: ", len(tree))

    results = []
    tree.inorder(results)
    for x in results:
        print (x.value)


    print ("\n Testing adding children")
    a = BSTNode(50)
    b = BSTNode(40)
    c = BSTNode(35)
    d = BSTNode(37)
    e = BSTNode(45)
    f = BSTNode(90)