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__())
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))
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)
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)
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))
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)
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)
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)
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)
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)
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])
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])
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)
def test_remove_empty(self): tree = BST() with self.assertRaises(EmptyTreeError): tree.remove_value(70)
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)