SlideShare una empresa de Scribd logo
1 de 77
UNIVERSIDAD TÉCNICA DE MANABÍ.EXTENSIÓN – El Carmen. Nombre: Vanessa  Liseth Peñafiel Loor. Julio Eduardo Sánchez Guerra. Semestre: 4º. Ing. Sistemas. Tutor: Ing. Roció Mendoza. Materia: Estructura de datos. año lectivo: 2010-2011.
LISTAS ABIERTAS La forma más simple de estructura dinámica es la lista abierta. En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente vale NULL. En las listas abiertas existe un nodo especial: el primero. Normalmente diremos que nuestra lista es un puntero a ese primer nodo y llamaremos a ese nodo la cabeza de la lista. Eso es porque mediante ese único puntero podemos acceder a toda la lista.
Operaciones básicas con listas Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar: ,[object Object]
Buscar o localizar elementos.
Borrar elementos.
Moverse a través de una lista, anterior, siguiente, primero.Cada una de estas operaciones tendrá varios casos especiales, por ejemplo, no será lo mismo insertar un nodo en una lista vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.
Insertar elementos en una lista abierta Insertar un elemento en una lista vacía. Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL: Lista vacía El proceso es muy simple, bastará con que:  1.- nodo->siguiente apunte a NULL  2.- Lista apunte a nodo.
INSERTAR UN ELEMENTO EN LA PRIMERA POSICIÓN DE UNA LISTA. Insertar al principio DATO DATO Lista Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que en el caso anterior la lista es una lista  vacía, pero siempre podemos, y debemos considerar una lista vacía como una lista. nodo DATO
De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no vacía: Insertado al principio El proceso sigue siendo muy sencillo: 1.- Hacemos que nodo->siguiente apunte a Lista.  2.- Hacemos que Lista apunte a nodo.
INSERTAR UN ELEMENTO EN LA ÚLTIMA POSICIÓN DE UNA LISTA Este es otro caso especial. Para este caso partiremos de una lista no vacía: Insertar al final
Eliminar elementos en una lista abierta Eliminar el primer nodo de una lista abierta Eliminar primer nodo Es el caso más simple. Partiremos de una lista con uno o más nodos, y usaremos un puntero auxiliar, nodo: 1.-Hacemos que nodo apunte al primer elemento de la lista, es decir a Lista.  2.-Asignamos a Lista la dirección del segundo nodo de la lista: Lista->siguiente.  3.-Liberamos la memoria asignada al primer nodo, el que queremos eliminar.
Primer nodo eliminado Si la lista sólo tiene un nodo, el proceso es también válido, ya que el valor de Lista->siguiente es NULL, y después de eliminar el primer nodo la lista quedará vacía, y el valor de Lista será NULL. De hecho, el proceso que se suele usar para borrar listas completas es eliminar el primer nodo hasta que la lista esté vacía.
ELIMINAR UN NODO CUALQUIERA DE UNA LISTA ABIERTA En todos los demás casos, eliminar un nodo se puede hacer siempre del mismo modo. Supongamos que tenemos una lista con al menos dos elementos, y un puntero al nodo anterior al que queremos eliminar. Eliminar un nodo
LISTAS CIRCULAR Una lista circular es una lista lineal en la que el último nodo a punta al primero. Las listas circulares evitan excepciones en la operaciones que se realicen sobre ellas. No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente. En algunas listas circulares se añade un nodo especial de cabecera, de ese modo se evita la única excepción posible, la de que la lista esté vacía.
LISTAS ENLAZADAS. la lista enlazada es un tda que nos permite almacenar datos de una forma organizada, al igual que los vectores pero, a diferencia de estos, esta estructura es dinámica, por lo que no tenemos que saber "a priori" los elementos que puede contener. en una lista enlazada, cada elemento apunta al siguiente excepto el último que no tiene sucesor y el valor del enlace es null.
ESQUEMA DE UN NODO Y UNA LISTA ENLAZADA.
LOS OPERADORES BÁSICOS DE UNA LISTA ENLAZADA SON:  ,[object Object]
 ELIMINAR:  elimina un nodo de la lista, puede ser según la posición o por el dato. ,[object Object]
OPERADORES DE ELIMINACIÓN EN LISTAS ENLAZADAS. las dos funciones expuestas para la eliminación de nodos, si bien tienen una definición prácticamente idéntica, el resultado obtenido es distinto. en el caso de g_slist_remove, se eliminará el nodo que contenga el valor data. si hay varios nodos con el mismo valor, sólo se eliminará el primero. si ningún nodo contiene ese valor, no se realiza ningún cambio en el gslist. en el caso de g_slist_remove_all, se eliminan todos los nodos de la lista que contengan el valor data y nos devuelve la nueva lista resultante de la eliminación de los nodos.
Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno de los extremos de la lista y sólo se pueden eliminar nodos en el otro. Además, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído. COLAS DATO DATO DATO DATO NULL. primero. Ultimo.
Memoria Estática Definición: Colección finita, homogénea y ordenada de elementos. Finita: Porque todo arreglo tiene un límite. Homogénea: Porque todos los elementos son del mismo tipo. Ordenada: Porque se puede determinar cuál es el enésimo elemento. Un arreglo tiene dos partes: Componentes e índices                     Componentes C1 C2 …… Cn Ííndices i0 i1 in ,[object Object]
ÍNDICES: Permiten referirse a los componentes del arreglo en forma individual.,[object Object]
Las variables apuntador están asociadas a un tipo de dato. Por ej. Si el valor de cont. es entero la variable apuntador ptrcont debe ser de tipo entero.,[object Object]
IMAGEN DE ARBOLES.
CONCEPTOS. EN RELACIÓN CON OTROS NODOS Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del árbol. En el ejemplo, 'L' y 'M' son hijos de 'G'. Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo 'A' es padre de 'B', 'C' y 'D‘. Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. En el ejemplo, ese nodo es el 'A'.
Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'. Nodo rama: aunque esta definición apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categorías anteriores. En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J‘.
IMÁGENES DE NODOS:
Orden: es el número potencial de hijos que puede tener cada elemento de árbol. De este modo, diremos que un árbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres será de orden tres, etc. : Grado: el número de hijos que tiene el elemento con más hijos dentro del árbol. En el árbol del ejemplo, el grado es tres, ya que tanto 'A' como 'D' tienen tres hijos, y no existen elementos con más de tres hijos. Nivel: se define para cada elemento del árbol como la distancia a la raíz, medida en nodos. El nivel de la raíz es cero y el de sus hijos uno. Así sucesivamente. En el ejemplo, el nodo 'D' tiene nivel 1, el nodo 'G' tiene nivel 2, y el nodo 'N', nivel 3.
Altura: la altura de un árbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un árbol puede considerarse a su vez como la raíz de un árbol, también podemos hablar de altura de ramas. El árbol del ejemplo tiene altura 3, la rama 'B' tiene altura 2, la rama 'G' tiene altura 1, la 'H' cero, etc. :
Declaración del tipo de dato Iremos ya declarando el tipo de dato que representará un árbol AVL. Esto nos ayudará a formalizar las cosas y nos permitirá en el correr de este documento ir definiendo las operaciones sobre el tipo de dato abstracto.  El lenguaje a utilizar será C. Fue elegido tan sólo por gustos personales del autor de este documento. Sin embargo se tratará de usar sólo aquellas características de C que puedan ser fácilmente implementadas en la mayoría de los lenguajes estructurados como Pascal, Modula-2, etc.
Los árboles de orden dos son bastante especiales, de hecho les dedicaremos varios capítulos. Estos árboles se conocen también como árboles binarios. Frecuentemente, aunque tampoco es estrictamente necesario, para hacer más fácil moverse a través del árbol, añadiremos un puntero a cada nodo que apunte al nodo padre. De este modo podremos avanzar en dirección a la raíz, y no sólo hacia las hojas
Al igual que hicimos con las listas que hemos visto hasta ahora, declaramos un tipo tipoNodo para declarar nodos, y un tipo pNodo para es el tipo para declarar punteros a un nodo. Árbol es el tipo para declarar árboles de orden ORDEN.
El movimiento a través de árboles, salvo que implementemos punteros al nodo padre, será siempre partiendo del nodo raíz hacia un nodo hoja. Cada vez que lleguemos a un nuevo nodo podremos optar por cualquiera de los nodos a los que apunta para avanzar al siguiente nodo.
Tipo de Recorrido El modo evidente de moverse a través de lasramas de un árbol es siguiendo los punteros, del mismo modo en que nos movíamos a través de las listas. Esos recorridos dependen en gran medida del tipo y propósito del árbol, pero hay ciertos recorridos que usaremos frecuentemente. Se trata de aquellos recorridos que incluyen todo el árbol. Hay tres formas de recorrer un árbol completo, y las tres se suelen implementar mediante recursividad. En los tres casos se sigue siempre a partir de cada nodo todas las ramas una por una. Supongamos que tenemos un árbol de orden tres, y queremos recorrerlo por completo. Partiremos del nodo raíz:
PREORDEN En este tipode recorrido se realiza cierta acción (quizás simplemente imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata el subárbol izquierdo ycuando se haya concluido, el subárbol derecho. En el árbol de la figura elrecorrido en pre orden sería: D-C-H-J-A-E-M-G-K-I-F-B-
Recorrido pre orden -Raíz-Sub árbol izquierdo-Sub árbol derecho
INORDEN. En este caso se trata primero el subárbol izquierdo, después el nodo actual y por último el subárbol derecho. En un ABBeste recorrido daría los valores de clave ordenados de menor a mayor. En el árbol de la figura el recorrido en inorden sería: H-J-C-E-A-M-D-K-I-G-
RECORRIDO INORDEN -Sub árbol izquierdo-Raíz-Sub árbol derecho
POSORDEN. En este caso se trata primero el subárbol izquierdo,despuésel derecho y por último el nodo actual. En el árbol de lafigura el recorrido en postordensería: J-H-E-M-A-C-I-K-B-L-F-G-D
RECORRIDO POSTORDEN -Sub árbol izquierdo-Sub árbol derecho-Raíz
ARBOL BINARIO DE BUSQUEDA Un árbol binario de búsqueda es un tipo particular de árbol binario que presenta una estructura de datos en forma de árbol usada  en informática. Un árbol binario de búsqueda (ABB) es un árbol binario definido de la siguiente forma: Todo árbol vacío es un árbol binario de búsqueda. El interés de los árboles binarios de búsqueda (ABB) radica en que su recorrido en inorden proporciona los elementos ordenados de forma ascendente y en que la búsqueda de algún elemento suele ser muy eficiente.
DESCRIPCION. Un árbol binario no vacío, de raíz R, es un árbol binario de búsqueda si: • En caso de tener subárbol izquierdo, la raíz R debe ser mayor que el valor máximo almacenado en el subárbol izquierdo, y que el subárbol izquierdo sea un árbol binario de búsqueda. • En caso de tener subárbol derecho, la raíz R debe ser menor que el valor mínimo almacenado en el subárbol derecho, y que el subárbol derecho sea un árbol binario de búsqueda.
INSERCION. La inserción es similar a la búsqueda y se puede dar una solución tanto iterativa como recursiva. Si tenemos inicialmente como parámetro un árbol vacío se crea un nuevo nodo como único contenido el elemento a insertar. Si no lo está, se comprueba si el elemento dado es menor que la raíz del árbol inicial con lo que se inserta en el subárbol izquierdo y si es mayor se inserta en el subárbol derecho. De esta forma las inserciones se hacen en las hojas.
BORRADO. La operación de borrado no es tan sencilla como las de búsqueda e inserción. Existen varios casos a tener en consideración: BORRAR UN NODO SIN HIJOS Ó NODO HOJA: simplemente se borra y se establece a nulo el apuntador de su padre.
Borrar un nodo con un subárbol hijo: se borra el nodo y se asigna su subárbol hijo como subárbol de su padre. En el siguiente ejemplo lo veremos:
Borrar un nodo con dos subárboles hijo:  la solución está en reemplazar el valor del nodo por el de su predecesor o por el de su sucesor en inorden y posteriormente borrar este nodo. Su predecesor en inorden será el nodo más a la derecha de su subárbol izquierdo (mayor nodo del subárbol izquierdo), y su sucesor el nodo más a la izquierda de su subárbol derecho (menor nodo del subárbol derecho). En la siguiente figura se muestra cómo existe la posibilidad de realizar cualquiera de ambos reemplazos:
Árboles equilibrados avl. Un árbol AVL (llamado así por las iníciales de sus inventores: Adelson-Velskii y Landis) es un árbol binario de búsqueda en el que para cada nodo, las alturas de sus subárboles izquierdo y derecho no difieren en más de 1. No se trata de árboles perfectamente equilibrados, pero sí son lo suficientemente equilibrados como para que su comportamiento sea lo bastante bueno como para usarlos donde los ABB no garantizan tiempos de búsqueda óptimos. El algoritmo para mantener un árbol AVL equilibrado se basa en reequilibrados locales, de modo que no es necesario explorar todo el árbol después de cada inserción o borrado.
FACTOR DE EQUILIBRIO. Cada nodo, además de la información que se pretende almacenar, debe tener los dos Cada nodo, además de la información que se pretende almacenar, debe tener los dos punteros a los árboles derecho e izquierdo, igual que los árboles binarios de búsqueda (ABB), y además el dato que controla el factor de equilibrio. El factor de equilibrio es la diferencia entre las alturas del árbol derecho y el izquierdo: FE = altura subárbol derecho - altura subárbol izquierdo; Por definición, para un árbol AVL, este valor debe ser -1, 0 ó 1. Si el factor de equilibrio de un nodo es: 0 -> el nodo está equilibrado y sus subárboles tienen exactamente la misma altura. 1 -> el nodo está equilibrado y su subárbol derecho es un nivel más alto. -1 -> el nodo está equilibrado y su subárbol izquierdo es un nivel más alto. Si el factor de equilibrio Fe≥2 o Fe≤-2 es necesario reequilibrar
OPERACIONES. Las operaciones básicas de un árbol AVL implican generalmente el realizar los mismos algoritmos que serían realizados en un árbol binario de búsqueda desequilibrado, pero precedido o seguido por una o más de las llamadas "rotaciones AVL.
Rotación. Rotaciones simples de nodos Los reequilibrados se realizan mediante rotaciones, en el siguiente punto veremos cada caso, ahora vamos a ver las cuatro posibles rotaciones que podemos aplicar. Rotación simple a la derecha (SD).
el árbol resultante queda así.
Rotación simple a la izquierda (SI). Se trata del caso simétrico del anterior. Así empieza la rotación    y         así termina.
Si la inserción se produce en el hijo derecho del hijo ROTACIÓN DOBLE A LA DERECHA.
ROTACIÓN DOBLE A LA IZQUIERDA
INSERCIÓN. La inserción en un árbol de AVL puede ser realizada insertando el valor dado en el árbol como si fuera un árbol de búsqueda binario desequilibrado y después retrocediendo hacia la raíz, rotando sobre cualquier nodo que pueda haberse desequilibrado durante la inserción. Proceso de inserción: 1.buscar hasta encontrar la posición de inserción o modificación (proceso idéntico a inserción en árbol binario de búsqueda)  2.insertar el nuevo nodo con factor de equilibrio “equilibrado”  3.desandar el camino de búsqueda, verificando el equilibrio de los nodos, y re-equilibrando si es necesario
Balance delÁrbol El inconveniente que presentan estos árboles, es que al realizar modificaciones sobre él (insertar o borrar) podemos perder el equilibrio, por lo que tendremos que proceder al equilibrado del árbol mediante rotaciones.
Operaciones Los árboles AVL comparten las mismas operaciones básicas que el ABB, pero precedido o seguido por una o más de las llamadas "rotaciones AVL".
Inserción Puesto que las inserciones involucran a un único nodo nuevo, los desequilibrios siempre significan que en uno (o mas) de los nodos del árbol se produce una diferencia de altura entre su subárbol izquierdo y su subárbol derecho que es 2 o −2. Así pues, después de insertar en el árbol, la detección del desequilibrio es fácil, basta con examinar el campo balance. Si el balance es −2, es que hemos insertado un nuevo nodo en el subárbol izquierdo, y si es 2, la inserción tuvo lugar en el subárbol derecho.
Factor de Balance Los nodos tienen un Factor de Balance (FB)  que está entre –1 y 1. FB=Altura del subárbol derecho – Altura del subárbol izquierdo ,[object Object]
FB =1 subárbol derecho más grande que izquierdo.
FB = -1 subárbol izquierdo más grande que derecho	Para realizar la inserción, se realiza igual que  en un árbol binario y después se verifica el balanceo.
Ejemplo 21 21 33 13 40 33 13 10 18 25 40 26 10 18 25 26 26 27 26 Al agregar el valor 27 el árbol  se DESBALANCEÓ (el Factor de Balanceo para el nodo con el valor 25 ahora es 2). Se requiere una ROTACIÓN. Al agregar el valor 26 el árbol cumple con las reglas de un AVL (el Factor de Balanceo de todos los nodos es 0, 1 ó –1) .
Rotaciones El reequilibrado se produce de abajo hacia arriba sobre los nodos en los que se produce el desequilibrio. Pueden darse dos casos: rotación simple o rotación doble; a su vez ambos casos pueden ser hacia la derecha o hacia la izquierda.
1) Rotaciones simple a la Izquierda Raíz 5 Sube A Baja Pívot 3 B ,[object Object], a la izquierda 2 C D NODO PIVOTE: Es el nodo ancestro más cercano del nodo recién insertado cuyo Factor de Balanceo es diferente de cero.
1) Rotaciones simple a la Izquierda 3 5 2 Árbol balanceado A C B D
2) Rotaciones simple a la derecha Raíz 3 Baja Pívot A 5 Sube B 7 C D ,[object Object],a la derecha
2) Rotaciones simple a la derecha 5 3 7 Árbol balanceado A B C D
3) Rotaciones doble  a la Izquierda 5 A Raíz Baja 3 Pívot 2 Rotaciones simples B 4 Sube C D
3) Rotaciones doble  a la Izquierda Raíz 5 Baja A Sube Pívot 4 D 3 C B

Más contenido relacionado

La actualidad más candente

Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalizaciónMarcelo Herrera
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesAndrés Londoño
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relaciónjosecuartas
 
Unidad II. Modelo de Datos
Unidad II. Modelo de DatosUnidad II. Modelo de Datos
Unidad II. Modelo de Datosucbasededatos
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
NORMALIZACIÓN DE BASES DE DATOS.pdf
NORMALIZACIÓN DE BASES DE DATOS.pdfNORMALIZACIÓN DE BASES DE DATOS.pdf
NORMALIZACIÓN DE BASES DE DATOS.pdfSumica1
 
Cardinalidad
CardinalidadCardinalidad
CardinalidadUTN
 
ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles) ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles) brayan0015
 

La actualidad más candente (20)

Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalización
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionales
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Pilas estáticas. IESIT
Pilas estáticas. IESITPilas estáticas. IESIT
Pilas estáticas. IESIT
 
Listas
ListasListas
Listas
 
Programacion orientada a objetos Java
Programacion orientada a objetos JavaProgramacion orientada a objetos Java
Programacion orientada a objetos Java
 
Unidad II. Modelo de Datos
Unidad II. Modelo de DatosUnidad II. Modelo de Datos
Unidad II. Modelo de Datos
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
NORMALIZACIÓN DE BASES DE DATOS.pdf
NORMALIZACIÓN DE BASES DE DATOS.pdfNORMALIZACIÓN DE BASES DE DATOS.pdf
NORMALIZACIÓN DE BASES DE DATOS.pdf
 
Cardinalidad
CardinalidadCardinalidad
Cardinalidad
 
ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles) ejercicios de recorrido de grafos (arboles)
ejercicios de recorrido de grafos (arboles)
 
cc302modulo2
cc302modulo2cc302modulo2
cc302modulo2
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Estructuras no-lineales
Estructuras no-linealesEstructuras no-lineales
Estructuras no-lineales
 

Destacado

Examen parcial de algoritmo y estructura de datos
Examen parcial de algoritmo y estructura de datosExamen parcial de algoritmo y estructura de datos
Examen parcial de algoritmo y estructura de datosJimmy Ibarra Escobar
 
Ejercicios de base de datos
Ejercicios de base de datosEjercicios de base de datos
Ejercicios de base de datosMaria Barrios
 
Boostez Votre Fiche Conseiller Sur Wengo
Boostez Votre Fiche Conseiller Sur WengoBoostez Votre Fiche Conseiller Sur Wengo
Boostez Votre Fiche Conseiller Sur Wengowengo
 
Business& Decision - PARIS DEVELOPPEMENT
Business& Decision - PARIS DEVELOPPEMENTBusiness& Decision - PARIS DEVELOPPEMENT
Business& Decision - PARIS DEVELOPPEMENTpberendes
 
Quelques réflexions autour du community management
Quelques réflexions autour du community managementQuelques réflexions autour du community management
Quelques réflexions autour du community managementAnthony Poncier
 
Vigilancia y escucha en la Red
Vigilancia y escucha en la RedVigilancia y escucha en la Red
Vigilancia y escucha en la RedMikel Sanchez
 
Thalys_offre_un_nouveau_WiFi_a_l
Thalys_offre_un_nouveau_WiFi_a_lThalys_offre_un_nouveau_WiFi_a_l
Thalys_offre_un_nouveau_WiFi_a_lCharlotte De Kesel
 
Zona contigua copy
Zona contigua copyZona contigua copy
Zona contigua copyElena Tapias
 
Protégez-Vous - choisir son déménageur
Protégez-Vous - choisir son déménageurProtégez-Vous - choisir son déménageur
Protégez-Vous - choisir son déménageurRafael Pereira
 
Cuadernos de la carcel de Antonio Gramsci T5
Cuadernos de la carcel de Antonio Gramsci T5Cuadernos de la carcel de Antonio Gramsci T5
Cuadernos de la carcel de Antonio Gramsci T5Dario Augusto
 
Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...
Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...
Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...Benjamina Mahasolo RANDRIANARIVELO
 

Destacado (20)

Examen parcial de algoritmo y estructura de datos
Examen parcial de algoritmo y estructura de datosExamen parcial de algoritmo y estructura de datos
Examen parcial de algoritmo y estructura de datos
 
Lista de cotejo para examenes
Lista de cotejo para examenesLista de cotejo para examenes
Lista de cotejo para examenes
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
Ejercicios de base de datos
Ejercicios de base de datosEjercicios de base de datos
Ejercicios de base de datos
 
Evaluación diagnostica lista de cotejos
Evaluación diagnostica lista de cotejosEvaluación diagnostica lista de cotejos
Evaluación diagnostica lista de cotejos
 
Boostez Votre Fiche Conseiller Sur Wengo
Boostez Votre Fiche Conseiller Sur WengoBoostez Votre Fiche Conseiller Sur Wengo
Boostez Votre Fiche Conseiller Sur Wengo
 
Business& Decision - PARIS DEVELOPPEMENT
Business& Decision - PARIS DEVELOPPEMENTBusiness& Decision - PARIS DEVELOPPEMENT
Business& Decision - PARIS DEVELOPPEMENT
 
PROJETFEM_PRESSRELEASE_FRINGE2016
PROJETFEM_PRESSRELEASE_FRINGE2016PROJETFEM_PRESSRELEASE_FRINGE2016
PROJETFEM_PRESSRELEASE_FRINGE2016
 
Quelques réflexions autour du community management
Quelques réflexions autour du community managementQuelques réflexions autour du community management
Quelques réflexions autour du community management
 
Decl sur honneur
Decl sur honneurDecl sur honneur
Decl sur honneur
 
Vigilancia y escucha en la Red
Vigilancia y escucha en la RedVigilancia y escucha en la Red
Vigilancia y escucha en la Red
 
Thalys_offre_un_nouveau_WiFi_a_l
Thalys_offre_un_nouveau_WiFi_a_lThalys_offre_un_nouveau_WiFi_a_l
Thalys_offre_un_nouveau_WiFi_a_l
 
Zona contigua copy
Zona contigua copyZona contigua copy
Zona contigua copy
 
Protégez-Vous - choisir son déménageur
Protégez-Vous - choisir son déménageurProtégez-Vous - choisir son déménageur
Protégez-Vous - choisir son déménageur
 
Lenguaje diagnostico
Lenguaje diagnosticoLenguaje diagnostico
Lenguaje diagnostico
 
Cuadernos de la carcel de Antonio Gramsci T5
Cuadernos de la carcel de Antonio Gramsci T5Cuadernos de la carcel de Antonio Gramsci T5
Cuadernos de la carcel de Antonio Gramsci T5
 
Compliments 2008 (7)
Compliments 2008 (7)Compliments 2008 (7)
Compliments 2008 (7)
 
port
portport
port
 
Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...
Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...
Vers des solutions concrètes pour renforcer la chaîne de responsabilités dans...
 

Similar a Examen De Estructura De Datos

Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 
Algoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colasAlgoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colasVivianaParraga3
 
Proyecto estructura
Proyecto estructuraProyecto estructura
Proyecto estructuramercy
 
Listas c#
Listas c#Listas c#
Listas c#rezzaca
 
Estructuras lineales y no lineales
Estructuras lineales y no linealesEstructuras lineales y no lineales
Estructuras lineales y no linealesAnselmo Emilio
 
Listas en C#
Listas en C#Listas en C#
Listas en C#rezzaca
 
Implementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptxImplementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptxRafael nin
 
Listas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPListas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPMiguelGomez371
 
Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacionjenny
 
Informe declaracion de listas David Ratmiroff.pdf
Informe declaracion de listas David Ratmiroff.pdfInforme declaracion de listas David Ratmiroff.pdf
Informe declaracion de listas David Ratmiroff.pdfYuriratmiroff
 

Similar a Examen De Estructura De Datos (20)

Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
Teoria de listas
Teoria de listasTeoria de listas
Teoria de listas
 
Algoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colasAlgoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colas
 
Proyecto estructura
Proyecto estructuraProyecto estructura
Proyecto estructura
 
Listas c#
Listas c#Listas c#
Listas c#
 
Listas
ListasListas
Listas
 
Estructuras lineales y no lineales
Estructuras lineales y no linealesEstructuras lineales y no lineales
Estructuras lineales y no lineales
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Implementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptxImplementación-de-pilas-por-medio-de-listas.pptx
Implementación-de-pilas-por-medio-de-listas.pptx
 
Listas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UPListas doblemente enlazadas C++ UP
Listas doblemente enlazadas C++ UP
 
pila cola arboles
pila cola arbolespila cola arboles
pila cola arboles
 
Arboles presentacion
Arboles presentacionArboles presentacion
Arboles presentacion
 
Pilas
PilasPilas
Pilas
 
Listas
ListasListas
Listas
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Informe declaracion de listas David Ratmiroff.pdf
Informe declaracion de listas David Ratmiroff.pdfInforme declaracion de listas David Ratmiroff.pdf
Informe declaracion de listas David Ratmiroff.pdf
 
Lista simple
Lista simpleLista simple
Lista simple
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Gilmora
GilmoraGilmora
Gilmora
 

Último

cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 

Último (20)

cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 

Examen De Estructura De Datos

  • 1. UNIVERSIDAD TÉCNICA DE MANABÍ.EXTENSIÓN – El Carmen. Nombre: Vanessa Liseth Peñafiel Loor. Julio Eduardo Sánchez Guerra. Semestre: 4º. Ing. Sistemas. Tutor: Ing. Roció Mendoza. Materia: Estructura de datos. año lectivo: 2010-2011.
  • 2. LISTAS ABIERTAS La forma más simple de estructura dinámica es la lista abierta. En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente vale NULL. En las listas abiertas existe un nodo especial: el primero. Normalmente diremos que nuestra lista es un puntero a ese primer nodo y llamaremos a ese nodo la cabeza de la lista. Eso es porque mediante ese único puntero podemos acceder a toda la lista.
  • 3.
  • 4. Buscar o localizar elementos.
  • 6. Moverse a través de una lista, anterior, siguiente, primero.Cada una de estas operaciones tendrá varios casos especiales, por ejemplo, no será lo mismo insertar un nodo en una lista vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.
  • 7. Insertar elementos en una lista abierta Insertar un elemento en una lista vacía. Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL: Lista vacía El proceso es muy simple, bastará con que: 1.- nodo->siguiente apunte a NULL 2.- Lista apunte a nodo.
  • 8. INSERTAR UN ELEMENTO EN LA PRIMERA POSICIÓN DE UNA LISTA. Insertar al principio DATO DATO Lista Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que en el caso anterior la lista es una lista vacía, pero siempre podemos, y debemos considerar una lista vacía como una lista. nodo DATO
  • 9. De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no vacía: Insertado al principio El proceso sigue siendo muy sencillo: 1.- Hacemos que nodo->siguiente apunte a Lista. 2.- Hacemos que Lista apunte a nodo.
  • 10. INSERTAR UN ELEMENTO EN LA ÚLTIMA POSICIÓN DE UNA LISTA Este es otro caso especial. Para este caso partiremos de una lista no vacía: Insertar al final
  • 11. Eliminar elementos en una lista abierta Eliminar el primer nodo de una lista abierta Eliminar primer nodo Es el caso más simple. Partiremos de una lista con uno o más nodos, y usaremos un puntero auxiliar, nodo: 1.-Hacemos que nodo apunte al primer elemento de la lista, es decir a Lista. 2.-Asignamos a Lista la dirección del segundo nodo de la lista: Lista->siguiente. 3.-Liberamos la memoria asignada al primer nodo, el que queremos eliminar.
  • 12. Primer nodo eliminado Si la lista sólo tiene un nodo, el proceso es también válido, ya que el valor de Lista->siguiente es NULL, y después de eliminar el primer nodo la lista quedará vacía, y el valor de Lista será NULL. De hecho, el proceso que se suele usar para borrar listas completas es eliminar el primer nodo hasta que la lista esté vacía.
  • 13. ELIMINAR UN NODO CUALQUIERA DE UNA LISTA ABIERTA En todos los demás casos, eliminar un nodo se puede hacer siempre del mismo modo. Supongamos que tenemos una lista con al menos dos elementos, y un puntero al nodo anterior al que queremos eliminar. Eliminar un nodo
  • 14. LISTAS CIRCULAR Una lista circular es una lista lineal en la que el último nodo a punta al primero. Las listas circulares evitan excepciones en la operaciones que se realicen sobre ellas. No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente. En algunas listas circulares se añade un nodo especial de cabecera, de ese modo se evita la única excepción posible, la de que la lista esté vacía.
  • 15. LISTAS ENLAZADAS. la lista enlazada es un tda que nos permite almacenar datos de una forma organizada, al igual que los vectores pero, a diferencia de estos, esta estructura es dinámica, por lo que no tenemos que saber "a priori" los elementos que puede contener. en una lista enlazada, cada elemento apunta al siguiente excepto el último que no tiene sucesor y el valor del enlace es null.
  • 16. ESQUEMA DE UN NODO Y UNA LISTA ENLAZADA.
  • 17.
  • 18.
  • 19. OPERADORES DE ELIMINACIÓN EN LISTAS ENLAZADAS. las dos funciones expuestas para la eliminación de nodos, si bien tienen una definición prácticamente idéntica, el resultado obtenido es distinto. en el caso de g_slist_remove, se eliminará el nodo que contenga el valor data. si hay varios nodos con el mismo valor, sólo se eliminará el primero. si ningún nodo contiene ese valor, no se realiza ningún cambio en el gslist. en el caso de g_slist_remove_all, se eliminan todos los nodos de la lista que contengan el valor data y nos devuelve la nueva lista resultante de la eliminación de los nodos.
  • 20. Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno de los extremos de la lista y sólo se pueden eliminar nodos en el otro. Además, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído. COLAS DATO DATO DATO DATO NULL. primero. Ultimo.
  • 21.
  • 22.
  • 23.
  • 25. CONCEPTOS. EN RELACIÓN CON OTROS NODOS Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del árbol. En el ejemplo, 'L' y 'M' son hijos de 'G'. Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo 'A' es padre de 'B', 'C' y 'D‘. Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. En el ejemplo, ese nodo es el 'A'.
  • 26. Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'. Nodo rama: aunque esta definición apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categorías anteriores. En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J‘.
  • 28. Orden: es el número potencial de hijos que puede tener cada elemento de árbol. De este modo, diremos que un árbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres será de orden tres, etc. : Grado: el número de hijos que tiene el elemento con más hijos dentro del árbol. En el árbol del ejemplo, el grado es tres, ya que tanto 'A' como 'D' tienen tres hijos, y no existen elementos con más de tres hijos. Nivel: se define para cada elemento del árbol como la distancia a la raíz, medida en nodos. El nivel de la raíz es cero y el de sus hijos uno. Así sucesivamente. En el ejemplo, el nodo 'D' tiene nivel 1, el nodo 'G' tiene nivel 2, y el nodo 'N', nivel 3.
  • 29. Altura: la altura de un árbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un árbol puede considerarse a su vez como la raíz de un árbol, también podemos hablar de altura de ramas. El árbol del ejemplo tiene altura 3, la rama 'B' tiene altura 2, la rama 'G' tiene altura 1, la 'H' cero, etc. :
  • 30. Declaración del tipo de dato Iremos ya declarando el tipo de dato que representará un árbol AVL. Esto nos ayudará a formalizar las cosas y nos permitirá en el correr de este documento ir definiendo las operaciones sobre el tipo de dato abstracto. El lenguaje a utilizar será C. Fue elegido tan sólo por gustos personales del autor de este documento. Sin embargo se tratará de usar sólo aquellas características de C que puedan ser fácilmente implementadas en la mayoría de los lenguajes estructurados como Pascal, Modula-2, etc.
  • 31. Los árboles de orden dos son bastante especiales, de hecho les dedicaremos varios capítulos. Estos árboles se conocen también como árboles binarios. Frecuentemente, aunque tampoco es estrictamente necesario, para hacer más fácil moverse a través del árbol, añadiremos un puntero a cada nodo que apunte al nodo padre. De este modo podremos avanzar en dirección a la raíz, y no sólo hacia las hojas
  • 32. Al igual que hicimos con las listas que hemos visto hasta ahora, declaramos un tipo tipoNodo para declarar nodos, y un tipo pNodo para es el tipo para declarar punteros a un nodo. Árbol es el tipo para declarar árboles de orden ORDEN.
  • 33. El movimiento a través de árboles, salvo que implementemos punteros al nodo padre, será siempre partiendo del nodo raíz hacia un nodo hoja. Cada vez que lleguemos a un nuevo nodo podremos optar por cualquiera de los nodos a los que apunta para avanzar al siguiente nodo.
  • 34. Tipo de Recorrido El modo evidente de moverse a través de lasramas de un árbol es siguiendo los punteros, del mismo modo en que nos movíamos a través de las listas. Esos recorridos dependen en gran medida del tipo y propósito del árbol, pero hay ciertos recorridos que usaremos frecuentemente. Se trata de aquellos recorridos que incluyen todo el árbol. Hay tres formas de recorrer un árbol completo, y las tres se suelen implementar mediante recursividad. En los tres casos se sigue siempre a partir de cada nodo todas las ramas una por una. Supongamos que tenemos un árbol de orden tres, y queremos recorrerlo por completo. Partiremos del nodo raíz:
  • 35. PREORDEN En este tipode recorrido se realiza cierta acción (quizás simplemente imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata el subárbol izquierdo ycuando se haya concluido, el subárbol derecho. En el árbol de la figura elrecorrido en pre orden sería: D-C-H-J-A-E-M-G-K-I-F-B-
  • 36. Recorrido pre orden -Raíz-Sub árbol izquierdo-Sub árbol derecho
  • 37. INORDEN. En este caso se trata primero el subárbol izquierdo, después el nodo actual y por último el subárbol derecho. En un ABBeste recorrido daría los valores de clave ordenados de menor a mayor. En el árbol de la figura el recorrido en inorden sería: H-J-C-E-A-M-D-K-I-G-
  • 38. RECORRIDO INORDEN -Sub árbol izquierdo-Raíz-Sub árbol derecho
  • 39. POSORDEN. En este caso se trata primero el subárbol izquierdo,despuésel derecho y por último el nodo actual. En el árbol de lafigura el recorrido en postordensería: J-H-E-M-A-C-I-K-B-L-F-G-D
  • 40. RECORRIDO POSTORDEN -Sub árbol izquierdo-Sub árbol derecho-Raíz
  • 41. ARBOL BINARIO DE BUSQUEDA Un árbol binario de búsqueda es un tipo particular de árbol binario que presenta una estructura de datos en forma de árbol usada en informática. Un árbol binario de búsqueda (ABB) es un árbol binario definido de la siguiente forma: Todo árbol vacío es un árbol binario de búsqueda. El interés de los árboles binarios de búsqueda (ABB) radica en que su recorrido en inorden proporciona los elementos ordenados de forma ascendente y en que la búsqueda de algún elemento suele ser muy eficiente.
  • 42. DESCRIPCION. Un árbol binario no vacío, de raíz R, es un árbol binario de búsqueda si: • En caso de tener subárbol izquierdo, la raíz R debe ser mayor que el valor máximo almacenado en el subárbol izquierdo, y que el subárbol izquierdo sea un árbol binario de búsqueda. • En caso de tener subárbol derecho, la raíz R debe ser menor que el valor mínimo almacenado en el subárbol derecho, y que el subárbol derecho sea un árbol binario de búsqueda.
  • 43.
  • 44. INSERCION. La inserción es similar a la búsqueda y se puede dar una solución tanto iterativa como recursiva. Si tenemos inicialmente como parámetro un árbol vacío se crea un nuevo nodo como único contenido el elemento a insertar. Si no lo está, se comprueba si el elemento dado es menor que la raíz del árbol inicial con lo que se inserta en el subárbol izquierdo y si es mayor se inserta en el subárbol derecho. De esta forma las inserciones se hacen en las hojas.
  • 45.
  • 46. BORRADO. La operación de borrado no es tan sencilla como las de búsqueda e inserción. Existen varios casos a tener en consideración: BORRAR UN NODO SIN HIJOS Ó NODO HOJA: simplemente se borra y se establece a nulo el apuntador de su padre.
  • 47.
  • 48. Borrar un nodo con un subárbol hijo: se borra el nodo y se asigna su subárbol hijo como subárbol de su padre. En el siguiente ejemplo lo veremos:
  • 49.
  • 50. Borrar un nodo con dos subárboles hijo: la solución está en reemplazar el valor del nodo por el de su predecesor o por el de su sucesor en inorden y posteriormente borrar este nodo. Su predecesor en inorden será el nodo más a la derecha de su subárbol izquierdo (mayor nodo del subárbol izquierdo), y su sucesor el nodo más a la izquierda de su subárbol derecho (menor nodo del subárbol derecho). En la siguiente figura se muestra cómo existe la posibilidad de realizar cualquiera de ambos reemplazos:
  • 51.
  • 52. Árboles equilibrados avl. Un árbol AVL (llamado así por las iníciales de sus inventores: Adelson-Velskii y Landis) es un árbol binario de búsqueda en el que para cada nodo, las alturas de sus subárboles izquierdo y derecho no difieren en más de 1. No se trata de árboles perfectamente equilibrados, pero sí son lo suficientemente equilibrados como para que su comportamiento sea lo bastante bueno como para usarlos donde los ABB no garantizan tiempos de búsqueda óptimos. El algoritmo para mantener un árbol AVL equilibrado se basa en reequilibrados locales, de modo que no es necesario explorar todo el árbol después de cada inserción o borrado.
  • 53.
  • 54. FACTOR DE EQUILIBRIO. Cada nodo, además de la información que se pretende almacenar, debe tener los dos Cada nodo, además de la información que se pretende almacenar, debe tener los dos punteros a los árboles derecho e izquierdo, igual que los árboles binarios de búsqueda (ABB), y además el dato que controla el factor de equilibrio. El factor de equilibrio es la diferencia entre las alturas del árbol derecho y el izquierdo: FE = altura subárbol derecho - altura subárbol izquierdo; Por definición, para un árbol AVL, este valor debe ser -1, 0 ó 1. Si el factor de equilibrio de un nodo es: 0 -> el nodo está equilibrado y sus subárboles tienen exactamente la misma altura. 1 -> el nodo está equilibrado y su subárbol derecho es un nivel más alto. -1 -> el nodo está equilibrado y su subárbol izquierdo es un nivel más alto. Si el factor de equilibrio Fe≥2 o Fe≤-2 es necesario reequilibrar
  • 55. OPERACIONES. Las operaciones básicas de un árbol AVL implican generalmente el realizar los mismos algoritmos que serían realizados en un árbol binario de búsqueda desequilibrado, pero precedido o seguido por una o más de las llamadas "rotaciones AVL.
  • 56. Rotación. Rotaciones simples de nodos Los reequilibrados se realizan mediante rotaciones, en el siguiente punto veremos cada caso, ahora vamos a ver las cuatro posibles rotaciones que podemos aplicar. Rotación simple a la derecha (SD).
  • 57.
  • 58. el árbol resultante queda así.
  • 59. Rotación simple a la izquierda (SI). Se trata del caso simétrico del anterior. Así empieza la rotación y así termina.
  • 60. Si la inserción se produce en el hijo derecho del hijo ROTACIÓN DOBLE A LA DERECHA.
  • 61. ROTACIÓN DOBLE A LA IZQUIERDA
  • 62. INSERCIÓN. La inserción en un árbol de AVL puede ser realizada insertando el valor dado en el árbol como si fuera un árbol de búsqueda binario desequilibrado y después retrocediendo hacia la raíz, rotando sobre cualquier nodo que pueda haberse desequilibrado durante la inserción. Proceso de inserción: 1.buscar hasta encontrar la posición de inserción o modificación (proceso idéntico a inserción en árbol binario de búsqueda) 2.insertar el nuevo nodo con factor de equilibrio “equilibrado” 3.desandar el camino de búsqueda, verificando el equilibrio de los nodos, y re-equilibrando si es necesario
  • 63.
  • 64. Balance delÁrbol El inconveniente que presentan estos árboles, es que al realizar modificaciones sobre él (insertar o borrar) podemos perder el equilibrio, por lo que tendremos que proceder al equilibrado del árbol mediante rotaciones.
  • 65. Operaciones Los árboles AVL comparten las mismas operaciones básicas que el ABB, pero precedido o seguido por una o más de las llamadas "rotaciones AVL".
  • 66. Inserción Puesto que las inserciones involucran a un único nodo nuevo, los desequilibrios siempre significan que en uno (o mas) de los nodos del árbol se produce una diferencia de altura entre su subárbol izquierdo y su subárbol derecho que es 2 o −2. Así pues, después de insertar en el árbol, la detección del desequilibrio es fácil, basta con examinar el campo balance. Si el balance es −2, es que hemos insertado un nuevo nodo en el subárbol izquierdo, y si es 2, la inserción tuvo lugar en el subárbol derecho.
  • 67.
  • 68. FB =1 subárbol derecho más grande que izquierdo.
  • 69. FB = -1 subárbol izquierdo más grande que derecho Para realizar la inserción, se realiza igual que en un árbol binario y después se verifica el balanceo.
  • 70. Ejemplo 21 21 33 13 40 33 13 10 18 25 40 26 10 18 25 26 26 27 26 Al agregar el valor 27 el árbol se DESBALANCEÓ (el Factor de Balanceo para el nodo con el valor 25 ahora es 2). Se requiere una ROTACIÓN. Al agregar el valor 26 el árbol cumple con las reglas de un AVL (el Factor de Balanceo de todos los nodos es 0, 1 ó –1) .
  • 71. Rotaciones El reequilibrado se produce de abajo hacia arriba sobre los nodos en los que se produce el desequilibrio. Pueden darse dos casos: rotación simple o rotación doble; a su vez ambos casos pueden ser hacia la derecha o hacia la izquierda.
  • 72.
  • 73. 1) Rotaciones simple a la Izquierda 3 5 2 Árbol balanceado A C B D
  • 74.
  • 75. 2) Rotaciones simple a la derecha 5 3 7 Árbol balanceado A B C D
  • 76. 3) Rotaciones doble a la Izquierda 5 A Raíz Baja 3 Pívot 2 Rotaciones simples B 4 Sube C D
  • 77. 3) Rotaciones doble a la Izquierda Raíz 5 Baja A Sube Pívot 4 D 3 C B
  • 78. 3) Rotaciones doble a la Izquierda 4 5 3 A C B D
  • 79. 4) Rotaciones doble a la derecha 3 A Raíz 5 Baja B Pívot Sube 4 C D
  • 80. 4) Rotaciones doble a la derecha 3 A Raíz 5 Baja B Pívot Sube 4 C D
  • 81. 4) Rotaciones doble a la derecha 4 5 3 A C B D