Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Página 2 de 14
Alumno(s) Nota
I.- OBJETIVOS:
Implementar recorridos en árboles binarios
Realizar operaciones en recorridos de árboles binarios.
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.
V.- RECURSOS:
En este laboratorio cada alumno trabajará con un equipo con Windows 10.
VII.- PROCEDIMIENTO:
Preorder transversal
(DLR), en la imagen se
muestra un tipo de
recorrido de árbol binario,
que se puede registrar
como la raíz izquierda y
derecha. Este recorrido de
preorden visita primero al
nodo raíz que en este caso
es estudiante, luego
atraviesa el subárbol
izaquierdo, pero como
vemos en la captura solo
hay unos dos subárboles
por lo cual extrae
aprobado, y finalmente
extrae el derecho.
Por lo cual el resultado
quedaría así:
Estudiante, Aprobado,
desaprobado.
Inorder transversal, en
esta captura muestra el
recorrido primero se
visita el subárbol
izquierdo que en este caso
seria Aprobado, luego al
ver que ya no tiene
izquierdas vuelve y extrae
estudiante, y al final
desaprobado cumpliendo
así un recorrido inorder.
Laboratorio de Algoritmos y Estructuras de Datos
Página 4 de 14
En esta imagen se
muestra el resultad de
un recorrido Post order
travesal donde primero
nos movemos al
subárbol izquierdo y
luego al subárbol
derecho. Después de
mover imprime los
datos del nodo. Dando
como resultado en este
caso Aprobado,
desaprobado y
estudiante.
'''
Binary Tree : Preorder Traversal
1
|
----------------------
| |
2 3
| |
---------- ------------
| | | |
4 5 6 7
--> 1 2 4 5 3 6 7
'''
Laboratorio de Algoritmos y Estructuras de Datos
Página 6 de 14
Laboratorio de Algoritmos y Estructuras de Datos
Página 7 de 14
'''
Binary Tree : Inorder Traversal
1
|
----------------------
| |
2 3
| |
---------- ------------
| | | |
4 5 6 7
--> 4 2 5 1 6 3 7
'''
Laboratorio de Algoritmos y Estructuras de Datos
Página 8 de 14
Laboratorio de Algoritmos y Estructuras de Datos
Página 9 de 14
'''
Binary Tree : Postorder Traversal
1
|
----------------------
| |
2 3
| |
---------- ------------
| | | |
4 5 6 7
--> 4 5 2 6 7 3 1
'''
Laboratorio de Algoritmos y Estructuras de Datos
Página 10 de 14
Laboratorio de Algoritmos y Estructuras de Datos
Página 11 de 14
'''
Created on Mar 11, 2019
@author: jgomezm
@version: 1.2 April 29,2020
'''
class BinaryTreeNode:
Laboratorio de Algoritmos y Estructuras de Datos
Página 13 de 14
#
def findDataRecursive(root, dataSearch, nro_times=0):
if root == None:
return nro_times
tmp_nro_times = nro_times
if root.data == dataSearch:
tmp_nro_times +=1
return tmp_nro_times + \
findDataRecursive(root.left, dataSearch, nro_times) + \
findDataRecursive(root.right, dataSearch, nro_times)
#
#
# Resolution
# 1
# 2 3
# 7 5 6 7
root = BinaryTreeNode(1)
root.left = BinaryTreeNode(2)
root.right = BinaryTreeNode(3)
root.left.left = BinaryTreeNode(7)
root.left.right = BinaryTreeNode(5)
root.right.left = BinaryTreeNode(6)
root.right.right = BinaryTreeNode(7)
dataSearch = 7
nro_times = findDataRecursive(root, dataSearch)
print("Se encontro el valor de %d, %d veces" % (dataSearch, nro_times))
def sumRecursive(root):
if (root == None):
return 0
return root.data + \
sumRecursive(root.left) + \
sumRecursive(root.right)
Laboratorio de Algoritmos y Estructuras de Datos
Página 14 de 14
#
# Resolution
# 1
# 2 3
# 7 5 6 7
root = BinaryTreeNode(1)
root.left = BinaryTreeNode(2)
root.right = BinaryTreeNode(3)
root.left.left = BinaryTreeNode(7)
root.left.right = BinaryTreeNode(5)
root.right.left = BinaryTreeNode(6)
root.right.right = BinaryTreeNode(7)
tmp = sumRecursive(root)
print("La suma del arbol es %d" % (tmp))
#
# Resolution
# 1
# 2 3
# 7 5 6 7
CONCLUSIONES:
1.
2.
3.