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)
Пример #4
0
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()
Пример #5
0
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)))
Пример #6
0
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)
Пример #7
0
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()