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

Arboles (Trees)

  • Upload
    sarila

  • View
    94

  • Download
    3

Embed Size (px)

DESCRIPTION

Arboles (Trees). Arboles Arboles binarios Recorridos de árboles Patrón método template Estructuras de datos para árboles. Arboles. un árbol representa una jeraquía ejemplos : estructura organizativa de una empresa. tabla de contenido de un libro. Arboles (1). - PowerPoint PPT Presentation

Citation preview

Page 1: Arboles (Trees)

1

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

Page 2: Arboles (Trees)

2

Arboles

• un árbol representa una jeraquía ejemplos:

estructura organizativa de una empresa

tabla de contenido de un libro

Page 3: Arboles (Trees)

3

Arboles (1)

•` Sistema de ficheros de Unix o DOS/Windows

Page 4: Arboles (Trees)

4

Arboles (2)

•Representación: Conjuntos anidados Paréntesis anidados Indentación Grafo

Representación más usual: grafo

Page 5: Arboles (Trees)

5

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

• Propiedad: (#aristas) = (#nodos) - 1

Page 6: Arboles (Trees)

6

Arboles binarios• Arbol ordenado: el hijo de cada nodo está ordenado• Arbol binario: árbol ordenado con todos los nodos internos de grado 2• Definición recursiva de árbol binario:• Un árbol binario es: - un nodo externo (hoja) o - un nodo interno (la raíz) y dos árboles binarios (subárbol izquierdo y subárbol derecho)

Page 7: Arboles (Trees)

7

Ejemplos de Arboles Binarios• expresión aritmética

• río especial

Page 8: Arboles (Trees)

8

Ejemplos de Arboles Binarios• Árboles de decisión

Page 9: Arboles (Trees)

9

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

Page 10: Arboles (Trees)

10

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

Page 11: Arboles (Trees)

11

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

Page 12: Arboles (Trees)

12

Recorrido de árboles (1)• recorrido preorder

Algoritmo 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

Page 13: Arboles (Trees)

13

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

Page 14: Arboles (Trees)

14

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 velse

asignar a o el operador almacenado en vx evaluateExpression(leftChild(v))y evaluateExpression(rightChild(v))return x o y

Page 15: Arboles (Trees)

15

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

• impresión de una expresión aritméticaespecialización de un recorrido inorderprint “(“ antes de recorrer el subárbol izquierdoprint “)” antes de recorrer el subárbol derecho

Page 16: Arboles (Trees)

16

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

1

2 3

4 5 6 7

8 9 10

Page 17: Arboles (Trees)

17

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

Page 18: Arboles (Trees)

18

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

Page 19: Arboles (Trees)

19

Especializando el Recorrido Genérico para Arbol Binario

• Imprimiendo una expresión aritmética

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(")"); }

Page 20: Arboles (Trees)

20

Estructura de Datos para Arboles Binarios mediante nodos enlazados

Page 21: Arboles (Trees)

21

Representación de Arboles Generales

árbol T

Arbol binario T' representa T