Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema7 Ardboles
Tema7 Ardboles
• Arboles
• Arboles binarios
• Recorridos de árboles
• Patrón método template
• Estructuras de datos para árboles
1
Arboles
• un árbol representa una jeraquía
ejemplos:
estructura organizativa de una empresa
2
Arboles (1)
3
Arboles (2)
•Representación:
Conjuntos anidados
Paréntesis anidados
Indentación
Grafo
4
Terminología de Arboles
• A es el nodo raíz
• B es el padre de D y E
• C es el primo de B
• D y E son los hijos de B
• D, E, F, G, I son nodos externos o
hojas
• A, B, C, H son nodos internos
• La profundidad (nivel) de E es 2
• La altura del árbol es 3
• El grado del nodo B es 2
6
Ejemplos de Arboles Binarios
• expresión aritmética
• río especial
7
Ejemplos de Arboles Binarios
• Árboles de decisión
8
Propiedades de Arboles Binarios
• (# nodos externos) = (# nodos internos) + 1
• (# nodos nivel i) 2 i
• (# nodos externos) 2 altura
• (altura) log2 (# nodos externos)
• (altura) log2 (# nodos) - 1
• (altura) (# nodos internos) - ((# nodos) - 1)/2
9
TDAs para Arboles
• Métodos contenedor genéricos
-size(), isEmpty(), elements()
• Métodos contenedor posicionales
-positions(), swapElements(p,q), replaceElement(p,e)
• Métodos consulta
-isRoot(p), isInternal(p), isExternal(p)
• Métodos acceso
-root(), parent(p), children(p)
• Métodos actualización
-específico de la
aplicación
10
TDAs para Arboles Binarios
• Métodos acceso
-leftChild(p), rightChild(p), sibling(p)
• métodos actualización
-expandExternal(p), removeAboveExternal(p)
-otros métodos específicos de la aplicación
11
Recorrido de árboles (1)
• recorrido preorder
Algoritmo preOrder(v)
“visitar” nodo v
for each hijo w de v do
realizar recursivamente preOrder(w)
• Ejm: lectura de un documento desde el inicio hasta el final
12
Recorrido de árboles (2)
• recorrido postorder
Algoritmo postOrder(v)
for each hijo w de v do
realizar recursivamente postOrder(w)
“visitar” nodo v
• comando du (disk usage) de Unix
13
Evaluación de Expresiones
Aritméticas
• especialización de recorrido postorder
Algoritmo evaluateExpression(v)
if v es un nodo externo
return la variable almacenada en v
else
asignar a o el operador almacenado en v
x evaluateExpression(leftChild(v))
y evaluateExpression(rightChild(v))
return x o y
14
Recorrido de árboles (3)
• recorrido inorder de un árbol binario
Algoritmo inOrder(v)
realizar recursivamente inOrder(leftChild(v))
“visitar” nodo v
realizar recursivamente inOrder(rightChild(v))
15
Recorrido de árboles (4)
1
2 3
4 5 6 7
8 9 10
Inorden: 8 4 9 2 10 5 1 6 3 7
Preorden: 1 2 4 8 9 5 10 3 6 7
Postorden: 8 9 4 10 5 2 6 7 3 1
16
Recorrido de Euler en Arboles
Binarios
• Recorrido genérico de un árbol binario
• los recorridos preorder, inorder, y postorder son casos especiales
del recorrido de Euler
• “caminar alrededor” del árbol y visitar cada nodo tres veces:
– a la izquierda
– desde abajo
– a la derecha
17
Patrón método Template
• Mecanismo de cómputo genérico que puede ser especializado
redefiniendo ciertos pasos.
• implementado por medio de una clase abstracta de Java con
métodos que pueder ser redifinidos por sus subclases
18
Especializando el Recorrido
Genérico para Arbol Binario
• Imprimiendo una expresión aritmética
20
Representación de Arboles
Generales
árbol T
21