Está en la página 1de 21

Arboles (Trees)

Arboles Arboles binarios Recorridos de rboles Patrn mtodo template Estructuras de datos para rboles

Arboles
un rbol representa una jeraqua ejemplos:
estructura organizativa de una empresa

tabla 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
5

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 Binarios


rboles 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 Arboles


Mtodos 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

10

TDAs para Arboles Binarios


Mtodos acceso -leftChild(p), rightChild(p), sibling(p) mtodos actualizacin -expandExternal(p), removeAboveExternal(p) -otros mtodos especficos de la aplicacin

11

recorrido preorder

Recorrido de rboles (1)

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

Evaluacin de Expresiones Aritmticas


especializacin 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))

impresin de una expresin aritmtica especializacin de un recorrido inorder print ( antes de recorrer el subrbol izquierdo print ) antes de recorrer el subrbol derecho

15

Recorrido de rboles (4)


1

2
4 5 6

3 7

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 genrico 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

Recorrido de Euler en Arboles Binarios

17

Patrn mtodo Template


Mecanismo 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

18

Especializando el Recorrido Genrico para Arbol Binario


Imprimiendo una expresin aritmtica
public 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(")"); }

19

Estructura de Datos para Arboles Binarios mediante nodos enlazados

20

Representacin de Arboles Generales


rbol T

Arbol binario T' representa T

21

También podría gustarte