コード例 #1
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)
コード例 #2
0
 def test_max(self):
     tree = BST()
     tree.add_value(100)
     self.assertEqual(tree.get_max_node().value, 100)
     tree.add_value(80)
     self.assertEqual(tree.get_max_node().value, 100)
     tree.add_value(200)
     self.assertEqual(tree.get_max_node().value, 200)
     tree.add_value(0)
     self.assertEqual(tree.get_max_node().value, 200)
     tree.add_value(-3)
     self.assertEqual(tree.get_max_node().value, 200)
コード例 #3
0
 def test_get_max_node2(self):
     tree = BST()
     tree.add_value(100)
     tree.add_value(80)
     tree.add_value(90)
     tree.add_value(200)
     tree.add_value(70)
     node_to_remove = tree.get_node(80)
     self.assertEqual(BSTNode(90), tree.get_max_node(node_to_remove))
コード例 #4
0
    def test_get_max_node(self):
        tree = BST()
        tree.add_value(100)
        tree.add_value(80)
        tree.add_value(90)
        tree.add_value(200)
        tree.add_value(70)

        self.assertEqual(BSTNode(200), tree.get_max_node())
コード例 #5
0
    def testGetMaxNode(self):
        tree = BST()
        tree.add_value(50)
        tree.add_value(25)
        tree.add_value(100)
        tree.add_value(10)
        tree.add_value(150)

        maxNode = tree.get_max_node()
        self.assertEqual(maxNode.value, 150)
コード例 #6
0
 def test_get_max_node(self):
     tree = BST()
     fill_int_tree(tree)
     self.assertEqual(tree.get_max_node().value, 200)
コード例 #7
0
 def test_max_empty(self):
     tree = BST()
     with self.assertRaises(EmptyTreeError):
         tree.get_max_node()
コード例 #8
0
            split_line = line.split(" : ")
            donor_name, donor_amount = split_line[0].strip(), int(
                split_line[1].strip())
            #create donor object and add it to the tree
            donor_info = Donor(donor_name, donor_amount)
            donor_tree.add_value(donor_info)
    donor_node = None
    if command == 'all':
        donor_node = donor_tree.get_min_node()
        while donor_node is not None:
            print(str(donor_node.value))
            donor_node = donor_tree.successor(donor_node)
    elif command == 'cheap':
        donor_node = donor_tree.get_min_node()
    elif command == 'rich':
        donor_node = donor_tree.get_max_node()
    elif command == 'who':
        amount_arg = sys.argv[3]
        if amount_arg[0] == '+':
            # who +amount: Prints the first donor that donated at least amount if any
            amount = int(amount_arg[1:])
            donor_node = donor_tree.upper_bound(amount)
            if not donor_node:
                print('No Match')

        elif amount_arg[0] == '-':
            # who -amount: Prints the first donor that donated no more than amount if any
            amount = int(amount_arg[1:])
            donor_node = donor_tree.lower_bound(amount)
            if not donor_node:
                print('No Match')
コード例 #9
0
            donor = Donor(*parse_line(line))
            donors.append(donor)


    #for donor in donors:
    #    print (donor)

    tree = BST(key=lambda x: x.amount)
    results = []

    for donor in donors:
        tree.add_value (donor)


    if cmd == 'rich':
        print (tree.get_max_node().value)
    elif  cmd == 'cheap':
        print (tree.get_min_node().value)
    elif  cmd == 'all':
        tree.inorder(results)
        for x in results:
            print (x.value)
    elif  cmd == 'list_above':
        tree.inorder(results)
        no_match = True
        for x in results:
            if x.value.amount >= amount:
                print (x.value)
                no_match = False
                break
        if no_match:
コード例 #10
0
    b = BSTNode(40)
    c = BSTNode(35)
    d = BSTNode(37)
    e = BSTNode(45)

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

    tree = BST(a)
    print("Tree height:", tree.height())
    print("Tree length:", len(tree))
    node_min = tree.get_min_node()
    print("Tree min:", node_min.value)
    node_max = tree.get_max_node()
    print("Tree max:", node_max.value)
    node_45 = tree.get_node(45)
    print("Tree 45", node_45.value)
    node_50 = tree.get_node(50)
    print("Tree 50", node_50.value)
    new_tree = BST()
    new_tree.add_value(100)
    new_tree.add_value(75)
    new_tree.add_value(200)
    new_tree.add_value(300)
    new_tree.add_value(30)
    new_tree.add_value(30)
    new_tree.add_value(30)
    print("Tree height:", new_tree.height())
    print("Tree length:", len(new_tree))