La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Presentaciones similares


Presentación del tema: ""— Transcripción de la presentación:

98 Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015
Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015

99 Introducción Aparecen estructuras de tipo árbol en:
Sistemas Operativos: Sistema de ficheros (Árbol de directorios). Compiladores, procesadores de textos, algoritmos de búsqueda. Elementos: Nodos. Conexiones (dirigidas) entre pares de nodos. Un nodo particular: Raíz. Cada nodo (excepto raíz) está conectado al menos con otro (padre). Relación padre-hijo. FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

100 Conceptos Un único camino conduce de la raíz a cada nodo.
Longitud del camino: Número de conexiones a atravesar. Nodos sin hijos: Hojas (leaves). Árbol con N nodos ó N-1 conexiones entre nodos. Profundidad de un nodo: Longitud del camino raíz ð nodo. Altura de un nodo: Longitud del camino desde el nodo a su hoja más profunda. Hermanos: Nodos con el mismo padre (siblings). FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

101 Conceptos El grado de un nodo es el número de flechas que salen de ese nodo. El grado de un árbol es el mayor de los grados que puede hallarse en el árbol. Un camino de un nodo n1 a otro nk, se define como la secuencia de nodos n1, n2, ... nk tal que ni es padre de ni+1 para 1  i < k. Longitud del camino entre 2 nodos, es el número de arcos que hay entre ellos. FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

102 Conceptos Relación antepasado (u) / descendiente (v):
Si hay camino de u a v. Tamaño de un nodo: Número de descendientes (incluyendo al nodo). Árbol (definición recursiva): o es vacío, o consiste en una raíz y cero o más (sub)árboles no vacíos A1..Ak conectados a la raíz. FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

103 Implementación 1. Cada nodo contiene: Referencias a todos sus hijos.
Datos almacenados en el nodo. Problema: Número de hijos desconocido. 2. Cada nodo: Lista con sus hijos. Referencia a los datos contenidos. Referencia a su nodo hermano. Representación "first child / next sibling“. FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

104 Implementación nodoRaiz sigHermano primerHijo null
FCC-BUAP Primavera 2015 sigHermano primerHijo null nodoRaiz MC Beatriz Beltrán Martínez

105 Árbol N-ario Ningún nodo puede tener más de N hijos.
El más utilizado: Binario, 2 hijos (left, right). Definición recursiva (Árbol binario): ... o es vacío. ... o tiene raíz, árbol derecho, árbol izquierdo. Implementación: Conocido el número de hijos. 2 referencias. FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

106 Árboles Binarios Árbol binario lleno (full binary tree).
Todas las hojas tiene la misma profundidad. El resto de nodos (no terminales) tienen 2 hijos. Árbol binario completo (complete binary tree). Cada nivel (excepto el más profundo) debe contener todos sus posibles nodos. En el nivel más profundo, los nodos están lo más a la izquierda que sea posible. FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

107 Expresiones Un nodo terminal representa un operando.
El resto de los nodos representan operadores (binarios). FCC-BUAP Primavera 2015 6 + ((7 - 3) * 5) Evaluación de la expresión: Evaluación de los subárboles (recursivamente). Aplicación del operador a los valores obtenidos. + 6 * 5 - 3 7 MC Beatriz Beltrán Martínez

108 Recursividad El tipo árbol se define recursivamente.
Muchas rutinas para manejo de árboles se implementan fácilmente de forma recursiva. public class NodoBinario { Object dato; NodoBinario left; NodoBinario right; public NodoBinario (Object elemento) dato = elemento; left = null; right = null; } // Métodos... FCC-BUAP Primavera 2015 dato right left MC Beatriz Beltrán Martínez

109 Recorridos Recorrido: Acceso a todos los nodos de un árbol
Ej: Para realizar una operación en cada nodo Fácil implementación mediante recursividad. Tipos de recorrido: Según el orden en que se "visitan" los nodos. Recorrido preorder. Recorridos postorder. Recorridos inorder. FCC-BUAP Primavera 2015 MC Beatriz Beltrán Martínez

110 Recorridos Recorrido preorden: Nodo raíz Subárbol left en preorden
Subárbol right en preorden FCC-BUAP Primavera 2015 1 Preorden 2 3 6 4 5 7 // en la clase NodoBinario public void mostrarPreorden() { System.out.println(dato); if (left != null) left.mostrarPreorden(); if (right != null) right.mostrarPreorden(); } MC Beatriz Beltrán Martínez

111 Recorridos Recorrido inorden: Subárbol left en inorden Nodo raíz
Subárbol right en inorden FCC-BUAP Primavera 2015 2 Inorden 1 5 7 3 4 6 // en la clase NodoBinario public void mostrarInorden() { if (left != null) left.mostrarInorden(); System.out.println(dato); if (right != null) right.mostrarInorden(); } MC Beatriz Beltrán Martínez

112 Recorridos Recorrido postorden: Subárbol left en postorden
Subárbol right en postorden Nodo raíz FCC-BUAP Primavera 2015 7 Postorden 1 6 5 3 2 4 // en la clase NodoBinario public void mostrarPostorden() { if (left != null) left.mostrarPostorden(); if (right != null) right.mostrarPostorden(); System.out.println(dato); } MC Beatriz Beltrán Martínez


Descargar ppt ""

Presentaciones similares


Anuncios Google