Descargar la presentación
La descarga está en progreso. Por favor, espere
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
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.