コード例 #1
0
 def test_get_node_error(self):
     tree = BST()
     tree.add_value(100)
     tree.add_value(80)
     tree.add_value(90)
     tree.add_value(200)
     tree.add_value(70)
     self.assertRaises(MissingValueError, tree.get_node, 50)
コード例 #2
0
def returnBST(filepath) -> BST:
    newbst = BST(key=lambda x: x.amount)
    with open(filepath) as inputfile:
        for i in inputfile:
            name, value = i.split(sep=":")
            newdonor = Donor(name, value)
            newbst.add_value(newdonor)
    return newbst
コード例 #3
0
    def testHeight(self):
        tree = BST()
        tree.add_value(50)
        tree.add_value(25)
        tree.add_value(100)
        tree.add_value(10)
        tree.add_value(150)

        heightOfTree = tree.height

        self.assertEqual(heightOfTree, 2)
コード例 #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)
コード例 #5
0
    def test_create_tree(self):
        tree = BST()
        fill_int_tree(tree)

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

        cmp_tree = BST(root)
        self.assertEqual(tree, cmp_tree)
コード例 #6
0
    def test_tree_not_eq(self):
        tree = BST()
        fill_int_tree(tree)

        root = BSTNode(100)
        root.left = BSTNode(80)
        root.right = BSTNode(200)
        root.left.left = BSTNode(70)
        root.left.right = BSTNode(92)

        cmp_tree = BST(root)
        cmp_tree._num_nodes = 5
        self.assertNotEqual(tree, cmp_tree)
コード例 #7
0
 def test_remove_root_one_children(self):
     tree = BST()
     tree.add_value(100)
     tree.add_value(50)
     print("tree length:", len(tree))
     tree.remove_value(100)
     print("tree length after:", len(tree))
     self.assertEqual(1, len(tree))
コード例 #8
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)
コード例 #9
0
 def test_duplicate_insert(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertEqual(len(tree), 5)
     tree.add_value(80)
     self.assertEqual(len(tree), 6)
     tree.add_value(80)
     self.assertEqual(len(tree), 7)
コード例 #10
0
    def test_add_node_with_two_children(self):
        a = BSTNode(50)
        b = BSTNode(40)
        c = BSTNode(35)
        d = BSTNode(37)
        e = BSTNode(45)
        f = BSTNode(90)
        g = BSTNode(150)

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

        m = BSTNode(65, children = [a,f])
        tree1 = BST(m)
        self.assertEqual(len(tree1), 7)
コード例 #11
0
    def test_add_parent(self):
        a = BSTNode(50)
        b = BSTNode(40)
        c = BSTNode(35)
        d = BSTNode(37)
        e = BSTNode(45)
        f = BSTNode(90)
        g = BSTNode(150)

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

        p = BSTNode(200)
        n = BSTNode(75, children = [f, g], parent = p)

        tree2 = BST(p)
        self.assertEqual(len(tree2), 4)
コード例 #12
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)
コード例 #13
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__())
コード例 #14
0
    def test_create_tree(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(80)
        tree.add_value(200)
        tree.add_value(90)
        tree.add_value(70)

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

        cmp_tree = BST(root)
        self.assertEqual(tree, cmp_tree)  # but we don't pass this
コード例 #15
0
ファイル: test_bst.py プロジェクト: xiyanmai/TreeProblem
    def test_create_tree(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(80)
        tree.add_value(200)
        tree.add_value(90)
        tree.add_value(70)

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

        cmp_tree = BST(root)
        self.assertEqual(tree, cmp_tree)
        self.assertEqual(tree.height, 2)
        self.assertEqual(len(tree), 5)
コード例 #16
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)
コード例 #17
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)
コード例 #18
0
 def test_remove_node_failure(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertRaises(MissingValueError, tree.remove_value, 60)
コード例 #19
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)
コード例 #20
0
 def test_str_trees(self):
     tree = BST(None, lambda x: x.lower())
     fill_str_tree(tree)
     value_node = tree.get_node("orange")
     self.assertEqual(value_node.value, "Orange")
コード例 #21
0
    def testGetMinNode(self):
        tree = BST()
        tree.add_value(50)
        tree.add_value(25)
        tree.add_value(100)
        tree.add_value(10)
        tree.add_value(150)

        minNode = tree.get_min_node()
        self.assertEqual(minNode.value, 10)
コード例 #22
0
 def test_get_node(self):
     tree = BST()
     fill_int_tree(tree)
     value_node = tree.get_node(80)
     self.assertEqual(value_node.value, 80)
コード例 #23
0
    def testGetNode(self):
        tree = BST()
        tree.add_value(200)
        tree.add_value(100)
        tree.add_value(300)
        tree.add_value(50)
        tree.add_value(110)
        tree.add_value(250)
        tree.add_value(500)
        tree.add_value(25)
        tree.add_value(75)
        tree.add_value(105)
        tree.add_value(150)
        tree.add_value(225)
        tree.add_value(275)

        retrievedNode = tree.get_node(105)
        self.assertEqual(retrievedNode.value, 105)
コード例 #24
0
 def test_get_node_failure(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertRaises(MissingValueError, tree.get_node, 50)
コード例 #25
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)
コード例 #26
0
 def test_get_min_node(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertEqual(tree.get_min_node().value, 70)
コード例 #27
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)
コード例 #28
0
 def test_len(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertEqual(len(tree), 5)
コード例 #29
0
ファイル: test_bst.py プロジェクト: xiyanmai/TreeProblem
 def test_create_empty_tree(self):
     tree = BST()
     self.assertEqual(len(tree), 0)
     self.assertIsNone(tree.root)
コード例 #30
0
 def test_height(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertEqual(tree.height, 2)