Sei sulla pagina 1di 4

Algoritmos y Estructuras de Datos

LABORATORIO N° 12

Arboles binarios de búsqueda

CODIGO DEL CURSO:

Alumno(s) Nota

Vilca Kohama Andy

Grupo
Ciclo I
Fecha de entrega

DESARROLLO DE SOFTWARE Ing. Jaime Farfán


PROGRAMA DE FORMACIÓN REGULAR jfarfan@tecsup.edu.pe
I.- OBJETIVOS:
 Definir las reglas básicas a seguir para la construcción y la correcta interpretación de los Diagramas de
Flujo, resaltando las situaciones en que pueden, o deben, ser utilizados.
 Elaborar y Diseñar algoritmos con arreglos de una sola dimensión(unidimensional) denominada vectores

II.- SEGURIDAD:
Advertencia:
En este laboratorio está prohibida la manipulación del
hardware, conexiones eléctricas o de red; así como la
ingestión de alimentos o bebidas.

III.- FUNDAMENTO TEÓRICO:


 Revisar el texto guía que está en el campus Virtual.

IV.- NORMAS EMPLEADAS:


 No aplica

V.- RECURSOS:
 En este laboratorio cada alumno trabajará con un equipo con Windows 10.

VI.- METODOLOGÍA PARA EL DESARROLLO DE LA TAREA:


 El desarrollo del laboratorio es individual.

VII.- PROCEDIMIENTO:

EJERCICIO DE APLICACIÓN
Crear un programa que lea de un archivo de genere 1000 números aleatorios y los almacene en una lista. Luego
agregar la información a un árbol binario y realizar búsquedas de datos. Medir el tiempo en que demora una
búsqueda.

import random
from time import time
class BSTNode:
'''
Node BST definition
'''
def __init__(root, data):
root.left = None
root.right = None
root.data = data

def insertNode(root, node):


'''
Insert a node in BST
'''
if root == None:
root = node
else:
if root.data > node.data:
if root.left == None:
root.left = node
else:
insertNode(root.left, node)
else:
if root.right == None:
root.right = node
else:
insertNode(root.right, node)
def find(root,data):

currentNode=root
if currentNode == None:
return None
else:
if data == currentNode.data:
return currentNode.data
if data < currentNode.data:
return find(currentNode.left,data)
else:
return find(currentNode.right,data)

def buildBSTFromArray(list):
'''
Build Binary Search Tree
from Array
:return:
'''
root = None

for item in list:


if list.index(item) == 1:
root = BSTNode(item)
else:
insertNode(root, BSTNode(item))
return root

def inOrderTraversal(root):
'''
Print value In Order Traversal
:param root:
:return:
'''
if not root:
return
inOrderTraversal(root.left)
print(root.data)
inOrderTraversal(root.right)

listar=[]

for i in range(1000):
numero = random.randint(1,1000)
listar.append(numero)
print('Arbol en base de un arreglo')
tiempoInicio = time()
root = buildBSTFromArray(listar)
inOrderTraversal(root)
tiempoPare= time()
tiempoProcesado = tiempoPare - tiempoInicio
print("Tiempo en el cual se crea nuestro arbol: ", tiempoProcesado)
print(" ")
num = int(input("Ingrese el numero a buscar: "))

tiempo_inicio = time()
dato = find(root, num)
tiempo_Pare = time()
print("Se encontro el numero: ",dato)

tiempo_Procesado = tiempo_Pare - tiempo_inicio


print("Tiempo estimado de la busqueda: {:,.10f}".format(tiempo_Procesado))
CONCLUSIONES:
1.
2.
3.

Potrebbero piacerti anche