class TestBinaryTree(unittest.TestCase): def setUp(self): print "=========== Running BinaryTree Test ===========" self.b = BinaryTree() def tearDown(self): print "================================================" def test_add_integers_and_print(self): # Run by unittest - adds 10 nodes in tree, then prints to display they were added correctly # State before: Empty tree # State after: Tree with 10 nodes self.b.add(1, None) self.b.add(2, 1) self.b.add(3, 1) self.b.add(4, 2) self.b.add(5, 2) self.b.add(6, 3) self.b.add(7, 3) self.b.add(8, 4) self.b.add(9, 4) self.b.add(10, 5) self.b.print_tree() def test_delete_and_print(self): # Run by unittest - adds 10 nodes in tree, deletes 2, then prints to ensure they are correctly deleted # State before: Empty tree # State after: Tree with 8 nodes self.b.add(1, None) self.b.add(2, 1) self.b.add(3, 1) self.b.add(4, 2) self.b.add(5, 2) self.b.add(6, 3) self.b.add(7, 3) self.b.add(8, 4) self.b.add(9, 4) self.b.add(10, 5) self.b.delete(10) self.b.delete(8) self.b.print_tree()
def main(): tree = BinaryTree() tree.insert("George") tree.insert("Michael") tree.insert("Tom") tree.insert("Adam") tree.insert("Jones") tree.insert("Peter") tree.insert("Daniel") printTree(tree) print("\nAfter delete George:") tree.delete("George") printTree(tree) print("\nAfter delete Adam:") tree.delete("Adam") printTree(tree) print("\nAfter delete Michael:") tree.delete("Michael") printTree(tree)
def main(): tree = BinaryTree() tree.insert("George") tree.insert("Michael") tree.insert("Tom") tree.insert("Adam") tree.insert("Jones") tree.insert("Peter") tree.insert("Daniel") printTree(tree) print("\nAfter delete George:") tree.delete("George") printTree(tree) print("\nAfter delete Adam:") tree.delete("Adam") printTree(tree) print("\nAfter delete Michael:") tree.delete("Michael") printTree(tree)
def test(): tree = BinaryTree() tree.print() tree.insert(8) tree.insert(3) tree.insert(10) tree.insert(1) tree.insert(6) tree.insert(14) tree.insert(4) tree.insert(7) tree.insert(13) tree.print() try: tree.insert(14) # Repetido, debe mostrar mensaje de error except KeyError: print("El nodo con llave 14 ya se encuentra en el árbol") try: tree.insert(1) # Repetido, debe mostrar mensaje de error except KeyError: print("El nodo con llave 1 ya se encuentra en el árbol") print("Mínimo:", tree.minimum().key) print("Máximo:", tree.maximum().key) tree.search(4) tree.search(8) tree.search(13) tree.search(2) tree.search(15) tree.delete(7) # Borrando el 7 (sin hijos) tree.print() tree.delete(10) # Borrando el 10 (solo hijo der) tree.print() tree.delete(6) # Borrando el 6 (solo hijo izq) tree.print() tree.delete(3) # Borrando el 3 (ambos hijos) tree.print() try: tree.delete(3) # Borrando el 3 (nodo no existe) except KeyError: print("El nodo con llave 3 no se encuentra en el árbol") tree.print() tree.delete(8) # Borrando el 8 (raíz, ambos hijos) tree.print() tree.insert(100) tree.print()
with open('abce.in') as f: operations_count = int(f.readline()) for index, line in enumerate(f.readlines()): operation_number, *operation_params = [int(number) for number in line.split()] operations.append({'type': operation_number, 'params': operation_params}) tree = BinaryTree() with open('abce.out', 'w') as g: for operation in operations: if operation['type'] == 1: tree.insert(*operation['params']) elif operation['type'] == 2: tree.delete(*operation['params']) elif operation['type'] == 3: current = tree.find(tree.root, *operation['params']) g.write('{}\n'.format('1' if current else '0')) elif operation['type'] == 4: g.write('{}\n'.format(tree.predecessor(*operation['params']))) elif operation['type'] == 5: g.write('{}\n'.format(tree.successor(*operation['params']))) elif operation['type'] == 6: response= tree.sorted(tree.root, *operation['params']) if response: g.write('{}\n'.format(' '.join(str(res) for res in response)))
from BinaryTree import BinaryTree bt = BinaryTree() vals = [9, 5, 7, 2, 6, 10, 16, 1, 3, 8, 17] root = None for x in vals: root = bt.insert(root, x) # print("PreOrder") # bt.preOrder(root) # print() print("InOrder") bt.inOrder(root) print() # print("PostOrder") # bt.postOrder(root) # print() # bt.search(root, 31) root = bt.delete(root, 5) bt.inOrder(root)
print("\nPre order:") tree.printPreOrder() print("\nPost order:") tree.printPostOrder() print("\nMin. value:") print(tree.getMin()) #get mininum value of the tree print("\nMax. value:") print(tree.getMax()) #get the maximun value of the tree node = Node(10) print("\nDelete: " + str(node.nodeId)) tree.delete(node) #delete node with ID 10 (one child) node = Node(9) print("\nDelete: " + str(node.nodeId)) tree.delete(node) #delete node with ID 9 (no children) node = Node(8) print("\nDelete: " + str(node.nodeId)) tree.delete(node) #delete node with ID 8 (two children) node = Node(6) print("\nDelete: " + str(node.nodeId)) tree.delete(node) #delete node with ID 6 (root) print("In order:") tree.printInOrder()