ÁRBOLES BINARIOS DE BUSQUEDA

Slides:



Advertisements
Presentaciones similares
5. Estructuras no lineales estáticas y dinámicas
Advertisements

ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
IBD Clase 7.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
Montículos Daniel González Pérez Cristina Sánchez Aragón
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Ordenamiento Interno y Búsqueda Binaria
Programación y Estructuras de Datos
Igor Santos Grueiro. Muchos objetos tienen CLAVE.
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
Investigación de Operaciones II
Operaciones sobre un árbol
Estructura de Datos en memoria secundaria
ESTRUCTURAS DE DATOS AVANZADAS
PROGRAMACION DE ESTRUCTURAS DE DATOS
Algoritmos Aleatorizados
Árboles balanceados AVL
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
ÁRBOLES DE EXPRESION.
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana.
Tema Nº4.
Listas circulares.
Ana Lilia Laureano Cruces UAM-A
Estructura de Datos Lineales
Material de apoyo Unidad 4 Estructura de datos
Árboles.
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Estructuras de Datos MC Beatriz Beltrán Martínez.
Definiciones: conjuntos, grafos, y árboles
Árboles, montículos y grafos Cola de prioridades, montículos
PILAS, COLAS, RECURSIVIDAD.
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
ARBOLES ESTRUCTURAS DE DATOS.
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Árboles binarios de búsqueda
ARBOLES ESTRUCTURAS DE DATOS.
Almacenamiento y Recuperacion de Información- Arbol AVL
Árboles.

Árboles Recomendado: 1. Nivelación Funciones
Árboles Binarios Estructuras de Datos.
ÁRBOLES Curso de Introducción a la Computación. Árboles binarios Un árbol binario es un conjunto de elementos que o está vacío o está dividido en tres.
Con el objeto de mejorar el rendimiento en la búsqueda surgen los árboles balanceados. La idea central de estos es la de realizar reacomodó o balanceos.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
Definiciones: conjuntos, grafos, y árboles
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
Algoritmos y estructura de datos en I.O.
ARBOLES GENERALIZADOS
Árboles Binarios de Búsqueda (ABB)
Arboles Binarios.
A YUDANTÍA 5: A RBOLES Carlos Pulgar R. Mail: Página Ayudantía:
Árboles Binarios * Recorridos * Tipo
MIA - Grupo 5 Unidad 2.
Árboles Equilibrados Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015.

Matemáticas Discretas MISTI
M.C. Meliza Contreras González
Listas Dinámicas.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN INGENIERÍA DE SOFTWARE UNIDAD DE APRENDIZAJE: ESTRUCTURAS DE DATOS Créditos institucionales.
Árboles Binarios de Búsqueda (ABB)
Árboles Binarios Estructuras de Datos.
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
Transcripción de la presentación:

ÁRBOLES BINARIOS DE BUSQUEDA El árbol binario de búsqueda es una estructura sobre la cual se pueden realizar eficientemente las operaciones de búsqueda, inserción y eliminación. En las listas, las operaciones de inserción y eliminación se pueden llevar a cabo con facilidad, sin embargo la búsqueda es una operación bastante costosa que incluso nos puede llevar a recorrer todos los elementos de ella para localizar uno en particular.

Definición de Árbol binario de Búsqueda Para todo nodo T del árbol debe cumplirse que todos los valores de los nodos del subárbol izquierdo de T deben ser menores o iguales al valor del nodo T. De forma similar, todos los valores de los nodos del subárbol derecho de T deben ser mayores o iguales al valor del nodo T. Es aquel en el que el hijo de la izquierda (si existe) de cualquier nodo contiene un valor más pequeño o igual que el nodo padre, y el hijo de la derecha (si existe) contiene un valor más grande o igual que el nodo padre.

En la siguiente figura tenemos un ejemplo de árbol binario de búsqueda.

Observe el lector que si en dicho árbol se sustituye el valor 140 del nodo por 160, 99 por 105 y 43 por 55; el árbol continúa siendo un árbol binario de búsqueda. Ahora bien, si en dicho árbol se remplaza el valor 87 del nodo por 125, entonces el árbol deja de ser un árbol binario de búsqueda puesto que viola el principio que dice que: “Todos los nodos del subárbol izquierdo del nodo T deben ser menores o iguales al nodo T” (en este caso 125 no es menor a 120).

También es posible observar que si se efectúa un recorrido inorden sobre un árbol de búsqueda se obtendrá una clasificación de los nodos en forma ascendente. El recorrido inorden del árbol de la figura anterior produce el siguiente resultado: 22-43-56-65-87-93-99-120-130-135-140

Búsqueda en un Árbol binario de búsqueda BÚSQUEDA (NODO, INFOR ) 1. Si INFOR < NODO^.INFO entonces 1.1 Si NODO^.IZQ = NIL Escribir “El ncdo no se encuentra en el árbol” si no Regresar a BÚSQUEDA con N0DO^.IZQ e INFOR {Llamada recursiva} 1.2 { Fin del condicional del paso 1.1} 1.3 Si INFOR> NODO^.INFO 1.3.1 Si NODO^.DER = NIL Escribir “El nodo no se encuentra en el árbol” Regresar a BUSQUEDA con NODO^.DER e INFOR { Llamada recursiva) 1.3.2 (Fin del condicional del paso 1.3.1 Escribir “El nodo se encuentra en el árbol” 1.4 { Fin del condicional del paso 1.3} 2. { Fin del condicional del paso 1}

BUSQUEDA1 (NODO, INFOR) 1. Si NODO ≠ NIL entonces 1.1 Si INFOR < NODO^.INFO Regresa a BÚSQUEDA1 con NODO^.IZQ e INFOR {Llamada recursiva} si no 1.1.1 Si INFOR > NODO^.INFO Regresa a BÚSQUEDA1 con NODO^.DER e INFOR {Llamada recursiva} Escribir “El nodo se encuentra en el árbol” 1.1.2 {Fin del condicional del paso 1.1.1} 1.2 {Fin del condicional del paso 1.1} Escribir “El nodo no se encuentra en el árbol” 2. {Fin del condicional del paso 1}

INSERCIÓN EN UN ÁRBOL BINARIO DE BÚSQUEDA La inserción es una operación que se puede realizar eficientemente en un árbol binario de búsqueda. La estructura crece conforme se inserten elementos al árbol. Los pasos que deben realizarse para insertar un elemento a un árbol binario de búsqueda son los siguientes: Debe compararse la clave a insertar con la raíz del árbol. Si es mayor, debe avanzarse hacia el subárbol derecho. Si es menor, debe avanzarse hacia el subárbol izquierdo. Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones: 2.1 LI subárbol derecho es igual a vacío, o el subárbol izquierdo es igual a vació; en cuyo caso se procederá a insertar el elemento en el lugar que le corresponde. 2.2 La clave que quiere insertarse es igual a la raíz del árbol; en cuyo caso no se realiza la inserción.

Ejemplo Supóngase que quieren insertarse las siguientes claves en un árbol binario de búsqueda que se encuentre vacío: claves: 120-87 - 43-65-140-99- 130-22-56 Los resultados parciales que ilustran cómo funciona el procedimiento se presentan en las figuras que siguen:

Inserción : clave 120 clave 87 clave 43 clave 65

Nota: Las líneas gruesas indican el elemento que acaba de insertarse. Inserción: Clave 22 Clave 56 Nota: Las líneas gruesas indican el elemento que acaba de insertarse.

Inserción en un Árbol Binario de Búsqueda INSERCIÓN (NODO, INFOR) 1. Si INFOR < NODO^.INFO entonces 1.1 Si NODO^.IZQ = NIL CREA (OTRO) {Crear un nuevo nodo} Hacer OTRO^.IZQNIL, OTRO^.DERNIL, OTRO^.INFOINFOR y NODO^.IZQOTRO si no Regresar a INSERCIÓN con NODO^.IZQ e INFOR {Llamada recursiva} 1.2 {Fin del condicional del paso 1.1} 1.3 Si INFOR > NODO^.INFO 1.3.1 Si NODO^.DER =NIL NODO^.DEROTRO Regresar a INSERCIÓN con NODO^.DER e INFOR {Llamada recusiva} 1.3.2 {Fin del condicional del paso 1.3.1} Escribir “El nodo ya se encuentran en el árbol” 1.4 {Fin del condicional del paso 1.3} 2. {Fin del condicional del paso 1}

INSERCIÓN1 (NODO INFOR) 1. Si NODO ≠ NIL entonces 1.1 Si INFOR < NODO^.INFO Regresar a INSERCIÓN1 con NODO^.IZQ e INFOR {Llamada recursiva} si no 1.1.1 Si INFOR > NODO^.INFO Regresar a INSERCIÓN1 con NODO^.DER e INFOR {Llamada recursiva} Escribir “El nodo ya se encuentra en el árbol” 1.1.2 {Fin del condicional del paso 1,1.1 } 1.2 { Fin del condicional del paso 1.1} CREA (OTRO) {Crear un nuevo nodo} Hacer OTRO^.IZQNIL, OTRO^.DERNIL, OTRO^.INFOINFOR y NODOOTRO 2. { Fin del condicional del paso 1}

BORRADO EN UN ÁRBOL BINARIO DE BÚSQUEDA La operación (le borrado es un poco más complicada que la de inserción. Ésta consiste en eliminar un nudo dci árbol sin violar los principios que definen justamente un árbol binario de búsqueda. Se debe distinguir los siguientes casos: Si el elemento a borrar es terminal u hoja, simplemente se suprime. Si el elemento a borrar tiene un solo descendiente, entonces tiene que sustituirse por ese descendiente. Si el elemento a borrar tiene los dos descendientes, entonces se tiene que sustituir por el nodo que se encuentra más a la izquierda en el subárbol derecho o por el nodo que se encuentra más a la derecha en el subárbol izquierdo. Además, debemos recordar que antes de eliminar un nodo, debe localizársele en el árbol. Para esto, se utilizará el algoritmo de búsqueda.

Ejemplo: Supóngase que se desea eliminar las siguientes claves del árbol binario de búsqueda de la figura anterior: claves: 22 - 99 - 87 - 120 - 140 - 135 – 56 Los resultados parciales que ilustran cómo funciona el procedimiento se presentan en las figuras que siguen:

Nota: Las flechas indican el elemento que quiere eliminarse. ELIMINACIÓN: CLAVE 22 ELIMINACIÓN: CLAVE 99 a) b) Nota: Las flechas indican el elemento que quiere eliminarse. Eliminación en un árbol binario de búsqueda. a) y f) corresponden al primer caso

g) Estado sinal del árbol. ELIMINACIÓN: CLAVE 87 d) c) Eliminación en un árbol binario de búsqueda. b) y c) corresponden al segundo caso; c) y d) corresponden al tercer caso. g) Estado sinal del árbol.

ELIMINACIÓN: CLAVE 140 ELIMINACIÓN: CLAVE 135 - 56 f) g) e)

Eliminación en un Árbol Binario de Búsqueda ELIMINACIÓN (NODO, INFOR) 1. Si NODO ≠ NIL entonces 1.1 Si INFOR < NODO^.INFO Regresar a ELIMINACIÓN con NODO^.IZQ e INFOR {Llamada recursiva} si no 1.1.1 Si INFOR > NODO^.INFO Regresar a ELIMINACION con NODO^.DER e INFOR {Llamada recursiva } Hacer OTRONODO 1.1.1.A Si OTRO^.DER = NIL Hacer NODOOTRO^.IZQ 1.1.1.B SÍ OTRO^.IZQ = NIL Hacer NODOOTRO^.DER Hacer AUXOTRO^.IZQ y AUX1AUX 1.1.1.C Repetir mientras AUX^.DER ≠ NIL Hacer AUX1AUX y AUXAUX^.DER 1.1.2.C {Fin del ciclo del paso 1.1.1.C} Hacer OTRO^.INFO AUX^.INFO, OTROAUX y AUX1^.DERAUX^.IZQ 1.1.2.B {Fin del condicional del paso 1.1.1.B} 1.1.2.A {Fin del condicional del paso 1.1.1.A} 1.1.2 {Fin del condicional del paso 1.1.1} 1.2 {Fin del condicional del paso 1.1} QUITA (OTRO) {Libera la memoria del nodo) Escribir “El nodo no se encuentra en el árbol” 2. {Fin del condicional del paso 1}