420 likes | 666 Views
Instituto Tecnológico de Culiacán. Ingeniería en Sistemas Computacionales. Estructura de datos. Material de apoyo Unidad 5. Prof. Felipe E. Muñiz R. TEMARIO. Unidad 5.- Estructuras no lineales. 5.1 Concepto de árbol. 5.1.1 Clasificación de árboles.
E N D
Instituto Tecnológico de Culiacán Ingeniería en Sistemas Computacionales Estructura de datos Material de apoyo Unidad 5 Prof. Felipe E. Muñiz R.
TEMARIO Unidad 5.- Estructuras no lineales. 5.1 Concepto de árbol. 5.1.1 Clasificación de árboles. 5.2 Operaciones Básicas sobre árboles binarios. 5.2.1 Creación. 5.2.2 Inserción. 5.2.3 Eliminación. 5.2.4 Recorridos sistemáticos. 5.2.5 Balanceo.
Definición Un árbol es una colección de elementos, llamados nodos, uno de los cuales se distingue con el nombre de raíz, los cuales mantienen una relación (parentezco) que define una estructura jerárquica entre ellos.
Concepto de árbol • Estructura Jerárquica no lineal, dinámica. • Relaciones padre-hijo entre nodos. • Ejemplos: sistema de archivos, estructura de un libro, diagrama organizacional, árboles genealógicos, etc.
Concepto de árbol • Un árbol se caracteriza por estar formado por un conjunto finito de nodos, conectados por una serie de aristas, tales que verifican que: • hay un único nodo especial llamado raíz. • los nodos restantes se dividen en árboles mas pequeños llamados subárboles. • cada nodo, excepto la raíz, tiene un único nodo padre. • la definición de árbol implica tener una estructura recursiva (por la división en subárboles). • la representación de los árboles se realiza con notaciones típicas de los árboles genealógicos. • hay un único camino desde la raíz hasta cada nodo.
Terminología básica • Raíz: único nodo sin padre. Ej.: nodo A • Nodo interno: tiene al menos un hijo. Ej.: nodos B, F, C • Nodo hoja (externo): nodo sin hijos. Ej.: nodos E, I, J, K, G, H, D • Descendiente directo: hijo. Ej.: B es descendiente directo de A • Descendiente: hijo, nieto, etc… Ej.: I es descendiente de F, B y A • Subárbol: árbol formado por un nodo y sus descendientes. Ej.: los nodos encerrados en el triangulo
Terminología básica • Grado de un nodo: Num. de descendientes directos. Ej.: el nodo B es grado 2. • Grado de un árbol: el grado mayor de sus nodos. Ej.: el nodo A y F son los de mayor grado (3), por lo tanto el árbol es grado 3. • Árbol binario: árbol de grado 2, cada nodo tiene como mucho dos descendientes directos. • Árbol multicamino: árbol de grado mayor que 2, cada nodo puede tener n descendientes directos.
Terminología básica • Profundidad de un nodo: Num. de predecesores. Ej.: profundidad de A es 0, profundidad de H es 2. • Altura del árbol: es igual a la profundidad de su nodo mas profundo + 1. Ej.: la profundidad de I, J y K que son los nodos mas profundos es 3 por lo tanto la altura de árbol es 3 + 1 = 4.
Terminología básica • Camino: existe un camino del nodo X al nodo Y, si existe una sucesión de nodos que permita llegar desde X hasta Y, su longitud es el número de aristas que lo conforman. camino(A,K)= {A, B, F, K} longitud 3 camino(C,K)= {} no hay camino
Recorrido Preorden • Se visita primero la raíz, luego el subárbol izquierdo y por ultimo el subárbol derecho, esto de manera recursiva para cada subárbol partiendo de la raíz. public static void preorden(NodoArbol R) { if (R!=null) { System.out.println(R.Descri); preorden(R.izq); preorden(R.der); } }
Recorrido Inorden • Se visita primero el subárbol izquierdo, luego la raíz y por ultimo el subárbol derecho, esto de manera recursiva para cada subárbol partiendo de la raíz. public static void inorden(NodoArbol R) { if (R!=null) { inorden(R.izq); System.out.print(R.Descri + ", "); inorden(R.der); } }
Recorrido Postorden • Se visita primero el subárbol izquierdo luego el subárbol derecho y por ultimo la raíz, esto de manera recursiva para cada subárbol partiendo de la raíz. public static void postorden(NodoArbol R) { if (R!=null) { postorden(R.izq); postorden(R.der); System.out.print(R.Descri + ", "); } }
Ejemplo: expresiones aritméticas • nodos internos: operadores. • nodos hoja: operandos. 2(a – 1) + 3b
Árboles Binarios de Búsqueda • Un árbol binario de búsqueda es un árbol binario en el que para cada nodo n, • todas las claves de los nodos del subárbol izquierdo son menores que la clave de n (o igual). • y todas las del subárbol derechomayores (o igual)
En algunos casos se exige que el árbol sea completo, es decir que todo nodo interno tenga sus dos descendientes.
Operaciones: • Búsqueda. • Inserción. • Eliminación
Algoritmo para borrar un nodo de un árbol binario de búsqueda. Para borrar un nodo con información X se presentan los siguientes casos. 1.- Que el nodo no exista: no se realiza ninguna acción. 2.- El nodo a eliminar tiene 0 o 1 hijo: El padre del nodo a eliminar (abuelo) toma como hijo al nodo nieto. 3.-El nodo a eliminar tiene 2 hijos: El nodo con la información X no se borra físicamente, se realiza una sustitución de información, (solo datos) con una de las siguientes acciones. a) La información mayor del subárbol izquierdo. b) La información menor del subárbol derecho. c) Después de la sustitución el valor que sustituyo al nodo X se manda a eliminar partiendo del subárbol donde se encuentra.