tema7_arboles (1).ppt

21
1 Arboles (Trees) • Arboles Arboles binarios Recorridos de árboles Patrón método template Estructuras de datos para árboles

Upload: gustavo-sanchez-bello

Post on 26-Nov-2015

37 views

Category:

Documents


0 download

TRANSCRIPT

  • 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