Post on 26-Nov-2015
Arboles (Trees)ArbolesArboles binariosRecorridos de rbolesPatrn mtodo templateEstructuras de datos para rboles
Arboles un rbol representa una jeraqua ejemplos: estructura organizativa de una empresatabla de contenido de un libro
Arboles (1)`Sistema de ficheros de Unix o DOS/Windows
Arboles (2)Representacin: Conjuntos anidados Parntesis anidados Indentacin Grafo
Representacin ms usual: grafo
Terminologa de Arboles A es el nodo raz 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
Propiedad: (#aristas) = (#nodos) - 1
Arboles binarios Arbol ordenado: el hijo de cada nodo est ordenado Arbol binario: rbol ordenado con todos los nodos internos de grado 2 Definicin recursiva de rbol binario: Un rbol binario es: - un nodo externo (hoja) o - un nodo interno (la raz) y dos rboles binarios (subrbol izquierdo y subrbol derecho)
Ejemplos de Arboles Binarios expresin aritmtica ro especial
Ejemplos de Arboles Binariosrboles de decisin
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
TDAs para ArbolesMtodos contenedor genricos -size(), isEmpty(), elements()Mtodos contenedor posicionales -positions(), swapElements(p,q), replaceElement(p,e)Mtodos consulta -isRoot(p), isInternal(p), isExternal(p)Mtodos acceso -root(), parent(p), children(p)Mtodos actualizacin -especfico de la aplicacin
TDAs para Arboles BinariosMtodos acceso -leftChild(p), rightChild(p), sibling(p)mtodos actualizacin -expandExternal(p), removeAboveExternal(p) -otros mtodos especficos de la aplicacin
Recorrido de rboles (1)recorrido preorderAlgoritmo preOrder(v)visitar nodo vfor each hijo w de v do realizar recursivamente preOrder(w)Ejm: lectura de un documento desde el inicio hasta el final
Recorrido de rboles (2)recorrido postorderAlgoritmo postOrder(v)for each hijo w de v do realizar recursivamente postOrder(w)visitar nodo vcomando du (disk usage) de Unix
Evaluacin de Expresiones Aritmticasespecializacin de recorrido postorder
Algoritmo evaluateExpression(v)if v es un nodo externoreturn la variable almacenada en velseasignar a o el operador almacenado en vx evaluateExpression(leftChild(v))y evaluateExpression(rightChild(v))return x o y
Recorrido de rboles (3)recorrido inorder de un rbol binarioAlgoritmo inOrder(v) realizar recursivamente inOrder(leftChild(v))visitar nodo v realizar recursivamente inOrder(rightChild(v))
impresin de una expresin aritmticaespecializacin de un recorrido inorderprint ( antes de recorrer el subrbol izquierdoprint ) antes de recorrer el subrbol derecho
Recorrido de rboles (4)Inorden: 8 4 9 2 10 5 1 6 3 7Preorden: 1 2 4 8 9 5 10 3 6 7Postorden: 8 9 4 10 5 2 6 7 3 1
Recorrido de Euler en Arboles BinariosRecorrido genrico de un rbol binariolos recorridos preorder, inorder, y postorder son casos especiales del recorrido de Eulercaminar alrededor del rbol y visitar cada nodo tres veces:a la izquierdadesde abajoa la derecha
Patrn mtodo TemplateMecanismo de cmputo genrico que puede ser especializado redefiniendo ciertos pasos.implementado por medio de una clase abstracta de Java con mtodos que pueder ser redifinidos por sus subclases
Especializando el Recorrido Genrico para Arbol BinarioImprimiendo una expresin aritmticapublic class PrintExpressionTraversal extends BinaryTreeTraversal {...protected void external(Position p, TraversalResult r) { System.out.print(p.element()); } protected void left(Position p, TraversalResult r) { System.out.print("("); }protected void below(Position p, TraversalResult r) { System.out.print(p.element()); }protected void right(Position p, TraversalResult r) { System.out.print(")"); }
Estructura de Datos para Arboles Binarios mediante nodos enlazados
Representacin de Arboles Generalesrbol TArbol binario T' representa T