예제 #1
0
 def test_get_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(70), tree.get_node(70))
예제 #2
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))
예제 #3
0
 def test_get_node(self):
     tree = BST()
     tree.add_value(100)
     self.assertEqual(tree.get_node(100).value, 100)
     tree.add_value(80)
     self.assertEqual(tree.get_node(80).value, 80)
     tree.add_value(200)
     self.assertEqual(tree.get_node(200).value, 200)
     tree.add_value(60)
     self.assertEqual(tree.get_node(60).value, 60)
     tree.add_value(90)
     self.assertEqual(tree.get_node(90).value, 90)
     tree.add_value(0)
     self.assertEqual(tree.get_node(0).value, 0)
     tree.add_value(-3)
     self.assertEqual(tree.get_node(-3).value, -3)
     tree.add_value(1)
     self.assertEqual(tree.get_node(1).value, 1)
예제 #4
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)
예제 #5
0
 def test_get_node(self):
     tree = BST()
     fill_int_tree(tree)
     value_node = tree.get_node(80)
     self.assertEqual(value_node.value, 80)
예제 #6
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")
예제 #7
0
 def test_init_(self,
                root: Optional[BSTNode[T]] = None,
                key: Callable[[T], K] = lambda x: x) -> None:
     node = BSTNode(45)
     tree = BST(node)
     self.assertEqual(tree.get_node(45).value, 45)
예제 #8
0
 def test_get_node_not_equal(self):
     tree = BST()
     tree.add_value(100)
     with self.assertRaises(MissingValueError):
         tree.get_node(90)
예제 #9
0
 def test_add_value(self):
     tree = BST()
     tree.add_value(100)
     self.assertEqual(tree.get_node(100).value, 100)
     self.assertEqual(len(tree), 1)
예제 #10
0
 def test_get_node_empty(self):
     tree = BST()
     with self.assertRaises(EmptyTreeError):
         tree.get_node(100)
예제 #11
0
            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')
        else:
            # who amount: Prints the first donor that who donated amount if any
            amount = int(amount_arg)
            try:
                donor_node = donor_tree.get_node(amount)
            except MissingValueError:
                print('No Match')
    if donor_node is not None:
        print(str(donor_node.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:
            print ("No Match")

    elif  cmd == 'list_below':
        tree.inorder(results)
        no_match = True
        for x in reversed(results):
            if x.value.amount < amount:
                print (x.value)
                no_match = False
                break
        if no_match:
            print ("No Match")

    elif  cmd == 'who':
        try:
            tree.get_node(amount)
        except:
            print ("No Match")
        else:
            print(tree.get_node(amount).value)

예제 #13
0
    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))

    print("new_tree added value")