Un árbol A es un conjunto finito de uno o más nodos tales: ,...V n. ) se dividen en m>=0 conjuntos disjuntos denominados A 1

Documentos relacionados
Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios

Francisco J. Hernández López

12/08/2017 AVL. Especificación sobre árboles AVL. AVL: rotaciones

Definición recursiva de los árboles

Francisco J. Hernández López

Estructura de Datos Unidad 6: ARBOLES

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Programación II Tema 5. Árboles binarios

Estructura de Datos. Temario Unidad VI. Árboles Árboles AVL

Capitulo VI Árboles y Grafos

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Arboles Binarios de Búsqueda en C++

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES

Tema 09: TAD Árbol binario

CAPÍTULO 2. ÁRBOLES 2.0. CONCEPTOS GENERALES

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS

Árboles binarios. Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Árbol ABB equilibrado. Lección: Árboles. Algorítmica II (Tema 4) Lenguajes y Sistemas Informáticos, Universidad Pablo de Olavide 1/ 58

Estructura de Datos. Árboles. Árboles. Primer Semestre, 2010 ÍNDICE DE CONTENIDOS

Tema 10: Árbol binario de búsqueda

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

Programación Estructuras Arborescentes

Tema: ARBOLES. Instructor: MC. Gerardo Gálvez Gámez Junio de 2018 INTRODUCCIÓN:

Tema 4. Estructura de datos no lineales Arboles y Grafos. J.T.P. Maria Eugenia Valesani - Programacion 1 - Fa.Ce.Na.

Árboles AVL. Lección 14

Estructuras de Datos ARBOLES Y GRAFOS

Estructura de Datos Tema 6. Árboles. Contenido 14/06/2018

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

Definición: NODO Un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar.

Definición de árbol. Árboles

Estructura de datos y de la información Boletín de problemas - Tema 10

Descubrir los árboles como paradigma de los tipos Recursivos de Datos

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Introducción a Árboles Árboles Binarios

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Árboles B y B ) 20. Algoritmos y Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 63

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

Tema 4. Estructuras no lineales de datos: árboles

Programación II Arboles Binarios(AB)

ARBOLES B. Lo que si es cierto es que la letra B no significa "binario", ya que:

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Estructuras de Datos y Algoritmos

Programación de sistemas Árboles

Algoritmos y Programación II Curso 2006

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

Estructura de Datos. Índice

Estructura de datos y algoritmos. Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios

Diseño y Análisis de Algoritmos con Java(I Sem. 2004) Prof. Dr.Eric Jeltsch F.

Tema 7: Árboles ESTRUCTURAS DE DATOS 1

Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la

Estructura de Datos. Unidad V Estructuras no lineales estáticas y dinámicas. (Árboles y grafos)

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos.

ASIGNATURA: (TIS-106) Estructuras de Datos II DOCENTE: Ing. Freddy Melgar Algarañaz

Listas Posicionales. Listas posicionales

Eliminación en un ABB

Introducción a los árboles. Lección 11

Árboles y esquemas algorítmicos. Tema III

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).

Árboles Binarios Ordenados Árboles AVL

ARBOLES ARBOLES COMPUTACIONALES MATEMATICAS DISCRETAS II

Estructuras de datos Árboles B

Introducción a Árboles Árboles Binarios

Estructuras de datos: Árboles binarios de

Programación II Árboles binarios de búsqueda (ABB)

Tema: Arboles en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Definición de Árbol Binario. Programación IV. Guía No.

LECCION N 08 ARBOLES. Un árbol es un grafo A que tiene un único nodo llamado raíz que:

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Capítulo 8. Árboles. Continuar

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

Segunda parte de árboles

El TAD Árbol. El TAD Árbol

Existen varios tipos de árboles: 5.1 Árboles binarios

Estructuras de Datos

Algoritmos y Estructuras de Datos. Guillermo Román Díez

Programación 2 Práctico 9 - TADs Árbol Binario de Búsqueda, Árbol Finitario y Árbol n-ario

Matemáticas Discretas Tc1003 Teoría de Grafos

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

Tema 14: ÁRBOLES Algoritmos y estructuras de datos I - Tema 14 1

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS

Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid

UNIDAD 9. DATOS COMPLEJOS PILAS

Estructuras de datos utilizando JAVA

Diseño de Conjuntos y Diccionarios

Estructuras de Datos y Algoritmos: Boletín de Problemas del segundo parcial

Roberto Carlos Abreu Díaz. October 28, 2009

Árboles Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid

Programación de sistemas

Estructura de Datos. Árboles B Árboles B* Árboles B + Primer Semestre, 2010

Árboles n-arios de búsqueda. Lección 16

INGENIERIA DE SISTEMAS 19 ESTRUCTURAS DE DATOS (Listas simples) ARBOLES

ESTRUCTURAS DE DATOS Y ALGORITMOS

Transcripción:

POTIII 2.5 rboles Un árbol es un conjunto finito de uno o más nodos tales: 1. xiste un nodo especial denominado RIZ(V 1 ) del árbol 2. os nodos restantes (V 1,V 2,...V n ) se dividen en m>=0 conjuntos disjuntos denominados 1, 2, 3,... m, cada uno de los cuales es, a su vez, un árbol. stos árboles se llaman subárboles de la RIZ. I POTIII 2.5 rboles Raíz: odo que no tiene antecesores odo: Vértices o elementos del árbol odo Terminal u hoja: Vértices o elementos del árbol que no contienen subárboles. ermanos: odos de un mismo padre. odos Interiores: odos que no son hoja ni raíz. osque: olección de dos o más árboles. rista: nlace entre dos nodos consecutivos. amino: Secuencia de aristas consecutivas. Rama: amino que termina en hoja. ivel: ongitud que se determina por la longitud del camino desde la raíz al nodo específico. ltura o profundidad: el número máximo de nodos de una rama. quivale al nivel más alto de los nodos más uno. Peso: es el número de nodos terminales. rado: el número de hijos que salen de un nodo I

POTIII 2.5.1 rboles inarios Un rbol binario es un conjunto finito de cero o más nodos tales que: 1. xiste un nodo denominado raíz del árbol 2. ada nodo tiene 0, 1 o 2 subárboles, conocidos como subárbol izquierdo y subárbol derecho. Se dice que dos árboles binarios son similares si tienen la misma estructura R 3 4 POTIII 2.5.1 rboles inarios Se dice que dos árboles binarios son equivalentes si tienen la misma estructura y además la misma información Se dice que un árbol binario es equilibrado si las alturas de los dos subárboles de cada nodo del árbol se diferencian en una unidad como máximo. T T S

POTIII 2.5.1 rboles inarios Un árbol binario es completo si todos sus nodos, excepto las hojas, tienen exactamente dos subárboles. T S Un árbol binario es lleno si todas sus hojas están al mismo nivel y todos sus nodos interiores tienen cada uno 2 hijos. Un árbol binario de altura h puede tener como máximo 2 h -1 nodos. T POTIII 2.5.1 rboles inarios Un árbol binario es degenerado si todos sus nodos excepto el último tienen sólo un subárbol T

POTIII 2.5.2 Representación de rboles inarios mediante punteros IO IZQ R T S T S POTIII 2.5.2 Recorrido de árboles binarios Se denomina recorrido de un árbol al proceso que permite acceder una sola vez a cada uno de los nodos del árbol. uando un árbol se recorre, el conjunto completo de nodos se examina. Recorrido pre-orden 1. Visitar nodo raíz 2. Recorrer el subárbol izquierdo en pre-orden 3. Recorrer el subárbol derecho en pre-orden Recorrido in-orden 1. Recorrer el subárbol izquierdo en in-orden 2. Visitar nodo raíz 3. Recorrer el subárbol derecho en in-orden Recorrido post-orden 1. Recorrer el subárbol izquierdo en post-orden 2. Recorrer el subárbol derecho en post-orden 3. Visitar nodo raíz

POTIII 2.5.2.1 Recorrido pre-orden Recorrido pre-orden 1. Visitar nodo raíz 2. Recorrer el subárbol izquierdo en pre-orden 3. Recorrer el subárbol derecho en pre-orden I M O I M O POTIII 2.5.2.1 Recorrido in-orden Recorrido in-orden 1. Recorrer el subárbol izquierdo en in-orden 2. Visitar nodo raíz 3. Recorrer el subárbol derecho en in-orden I M O I M O

POTIII 2.5.2.1 Recorrido post-orden Recorrido post-orden 1. Recorrer el subárbol izquierdo en post-orden 2. Recorrer el subárbol derecho en post-orden 3. Visitar nodo raíz I M O I M O POTIII 2.5.3 - otaciones a notación algorítmica que utilizaremos es la siguiente: puntero_a <tipo de dato>:punt puntero_a nodo:punt registro: nodo entero:elem punt:izq, der fin_registro struct nodo{ int elem; struct nodo *izq, *der; reación de un árbol: struct nodo* rear(){ struct nodo* = (struct nodo*)malloc(sizeof(struct -> elem = 5; -> der=u; -> izq=u; return ; nodo));

POTIII jercicios (Recorrido de árboles) I M O void preorden(struct nodo *p){ struct pila *cima; printf("\n preorden:\n"); cima=u; push(&cima,u); while(p){ printf("%d-", p->elem); if(p->der){ push(&cima,p->der); if(p->izq){ p=p->izq; else{ p=pop(&cima); I M O POTIII jercicios (Recorrido de árboles) I M O void inorden(struct nodo *p){ struct pila *cima; printf("\n inorden:\n"); cima=u; push(&cima,u); while(cima){ while(p){ push(&cima,p); p=p->izq; if(cima){ p=pop(&cima); I M O if(cima)printf("%d-", p->elem); p=p->der;

POTIII jercicios (Recorrido de árboles) I M O void postorden(struct nodo *p){ struct pila *cima; printf("\n postorden:\n");cima=u; push(&cima,u); while(cima){ while(p){ push(&cima,p); if(p->der){ push(&cima,p->der); push(&cima,u); p=p->izq; p=pop(&cima); while(p){ printf("%d-", p->elem); p=pop(&cima); if(!p){ p=pop(&cima); I M O POTIII jercicios (Recorrido de árboles) void push(struct pila **cima, struct nodo *valor) { struct pila *nuevo; nuevo = (struct pila*)malloc(sizeof(struct pila)); nuevo->valor = valor; nuevo->sgte = *cima; *cima = nuevo; struct nodo* pop(struct pila **cima) { struct pila *p; struct nodo *v; p = *cima; if(!*cima){ return (U); else{ *cima = p->sgte; v = p->valor; free(p); return(v);

POTIII 2.5.4 rboles atados Se dice que un árbol binario está atado si cada nodo del árbol posee un campo adicional de tipo puntero direccionado (si el recorrido lo requiere) al nodo siguiente en un determinado recorrido (pre-orden, in-orden o postorden). xisten distintas formas de atar un árbol binario, pero cada una corresponderá al recorrido en cuestión. I M O POTIII 2.5.4 rboles atados tadura Unidireccional - -- - - -

POTIII 2.5.5 rboles binarios de búsqueda Supongamos que se tiene n claves distintas en orden ascendente 1, 2, 3,, n y que se tiene un árbol binario T de n nodos. Se define i como el iésimo nodo visitado si se recorre T en In-orden. uego si se almacena la clave i en el nodo i, el árbol resultante tiene la siguiente propiedad: Para cada nodo i con clave i, todas las claves en los nodos del subárbol izquierdo son menores que i y todas las claves en los nodos del subárbol derecho son mayores que i. i <i >i POTIII 2.5.5 rboles binarios de búsqueda sta propiedad garantiza que el recorrido in-orden de T dará una lista ordenada de los elementos de T. i <i >i I M O

POTIII 2.5.5 rboles binarios de búsqueda struct nodo* buscar(struct nodo *a, struct nodo **ant, int valor){ int enc; struct nodo *anterior; enc=0; anterior=u; while(!enc && (a)){ if(a->elem==valor){ enc=1; else{ anterior=a; if(valor<a->elem){ a=a->izq; else{ a=a->der; *ant=anterior; return a; POTIII 2.5.5 rboles binarios de búsqueda void insertar(struct nodo **a, int valor){ struct nodo *nuevo,*ant; /* uscar posicion de insercion */ p=buscar(*a, &ant, valor); if(!p){ /*crear nodo nuevo*/ nuevo = (struct nodo*)malloc(sizeof(struct nodo)); nuevo->elem = valor; nuevo->izq=nuevo->der=u; if(!ant){ *a=nuevo; else{ if(valor<ant->elem){ ant->izq=nuevo; else{ ant->der=nuevo; else{ printf("nodo ya esta en el arbol");

POTIII 2.5.5 rboles binarios de búsqueda void borrar(struct nodo **a, int valor) { struct nodo *a1,*ab, *padre,*actual,*nodo; int aux; actual=buscar(*a, &padre, valor); /* uscar posicion de eliminacion */ while(actual) { if(eshoja(actual)) { if(padre){ if(padre->der == actual){ /*odo a eliminar es hoja derecha*/ padre->der = U; else{ /*odo a eliminar es hoja izquierda*/ padre->izq = U; else *a=u; actual=u; free(actual); return; else{ padre = actual; if(actual->der) { /*buscar el nodo de mas a la izquierda del subarbol derecho*/ nodo = actual->der; while(nodo->izq) { padre = nodo; nodo = nodo->izq; else{ /*buscar el nodo de mas a la derecha del subarbol izquierdo */ nodo = actual->izq; while(nodo->der) { padre = nodo; nodo = nodo->der; aux = actual->elem; /* Intercambio */ actual->elem = nodo->elem; nodo->elem = aux; actual = nodo; POTIII 2.5.6 rboles V Se dice que un árbol binario está balanceado si y sólo si en cada nodo las alturas de sus 2 subárboles difieren como máximo en 1. Todos los árboles perfectamente balanceados son árboles V. O V V

POTIII 2.5.6 rboles V V M O O V V I P M O POTIII 2.5.6.1 Rotaciones través de rotaciones es posible transformar un árbol binario cualquiera en un árbol V. Rotación derecha simple T3 T1 T1 T2 T2 T3 ((T1 T2) T3) (T1 (T2 T3))

POTIII 2.5.6.1 Rotaciones Rotación izquierda simple T1 T3 T2 T3 T1 T2 (T1 (T2 T3)) ((T1 T2) T3) POTIII 2.5.6.1 Rotaciones Rotación derecha doble T4 T1 T1 T2 T3 T4 T2 T3 (T1 (T2 T3) T4) ((T1 T2) (T3 T4))

POTIII 2.5.6.1 Rotaciones Rotación izquierda doble T1 T4 T1 T2 T3 T4 T2 T3 (T1 (T2 T3) T4) ((T1 T2) (T3 T4)) POTIII jercicios (Rotaciones)

POTIII 2.5.7 rboles Se define un árbol como un árbol de orden m que cumple con las siguientes propiedades. ingún nodo tiene más de m hijos. ada nodo excepto la raíz tiene al menos m / 2 hijos. Todos los caminos desde la raíz a una hoja tienen la misma longitud. Todas las hojas están al mismo nivel. l número de claves en el nodo interno es uno menos que el número de sus hijos. POTIII 2.5.7 rboles 20 40 60 80 <20 20<<40 40<<60 4 9 14 19 24 29 34 39 0 1 2 3 5 6 7 8 10 11 12 13 Ventajas úsqueda más rápida Menor altura esventajas Insercíón y eliminación de datos

POTIII 2.5.7 Inserción en un árbol Para determinar el punto de inserción apropiado para el nuevo registro, considerar los siguientes pasos. Si el nodo en el cual se debe insertar el registro aún no ha excedido su capacidad (m-1 registros o claves) insertando o manteniendo el orden establecido. 40 20 60 80 20 40 60 80 POTIII 2.5.7 Inserción en un árbol Si el nodo en el cual se debe insertar el registro excede su capacidad producto de esta nueva inserción (overflow), se debe proceder a dividir el nodo según el siguiente criterio. onsiderar como si el nodo tuviera capacidad para n registros y por lo tanto n+1 hijos (punteros). 50 20 40 60 80 eterminar el registro medio de acuerdo a: Registro medio (RM): p/2 = (n + 1)/2 Registro medio (RM): 5/2 = (4 + 1)/2 = 3

POTIII 2.5.7 Inserción en un árbol Tomar el RM e insertarlo en el nodo padre. Producto de lo anterior, el nodo se dividirá en 2 y el nodo padre quedará con un hijo más. 50 20 40 60 80 50 20 40 60 80 POTIII 2.5.7 Inserción en un árbol 380 395 430 480 406 412 451 472 493 506 511 Árbol de orden 5 395 430 480 espués de insertar 382 380 382 406 412 451 472 493 506 511 395 430 480 508 espués de insertar 518 y 508 380 382 406 412 451 472 493 506 511 518

POTIII 2.5.7 rboles * ay diversas formas de mejorar la utilización del almacenamiento en un árbol. Un método es retrasar la división de un nodo cuando se desborda. n lugar de eso, se redistribuyen en forma uniforme las claves en el nodo y en uno de sus hermanos adyacentes. 100 Árbol de orden 7 10 20 30 40 50 60 110 120 130 50 espués de insertar 35 se redistribuyen los hermanos 10 20 30 35 40 60 100 110 120 130 POTIII 2.5.7 rboles + Una de las principales desventajas del árbol es la dificultad de recorrer las claves en forma secuencial. l árbol +, conserva la propiedad de acceso aleatorio rápido del árbol, al mismo tiempo que permite un acceso secuencial rápido. 98 36 53 81 104 119 8 17 36 42 53 56 65 72 81 83 96 98 102 104 107 112 119 125 127 R8 R17 R36 R42 R53 R56 R65 R72 R81 R83 R96 R98 R 102 R 104 R 107 R 112 R 119 R 125 R 127