def test_get_min_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_min_node())
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)
def test_min_test(self): tree = BST() tree.add_value(100) self.assertEqual(tree.get_min_node().value, 100) tree.add_value(80) self.assertEqual(tree.get_min_node().value, 80) tree.add_value(200) self.assertEqual(tree.get_min_node().value, 80) tree.add_value(60) self.assertEqual(tree.get_min_node().value, 60) tree.add_value(90) self.assertEqual(tree.get_min_node().value, 60) tree.add_value(0) self.assertEqual(tree.get_min_node().value, 0) tree.add_value(-1) self.assertEqual(tree.get_min_node().value, -1) tree.add_value(-3) self.assertEqual(tree.get_min_node().value, -3)
def test_get_min_node(self): tree = BST() fill_int_tree(tree) self.assertEqual(tree.get_min_node().value, 70)
def test_min_empty(self): tree = BST() with self.assertRaises(EmptyTreeError): tree.get_min_node()
if __name__ == '__main__': donor_file_path = sys.argv[1] command = sys.argv[2] donor_tree = BST(None, lambda x: x.amount) with open(donor_file_path) as cfg: for line_num, line in enumerate(cfg): 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')
#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: print ("No Match")
if __name__ == '__main__': a = BSTNode(50) 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)