Árboles Binarios Estructuras de Datos.

Slides:



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

ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
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.
Á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.
Estructuras de datos y algoritmos
Utilización de un TAD Arbol.
Programación y Estructuras de Datos
ÁRBOLES BINARIOS DE BUSQUEDA
Operaciones sobre un árbol
Estructura de Datos en memoria secundaria
Árboles binarios. Algoritmos básicos
Tema 4 Árboles. Árbol sobre matriz.
Tema 4 Árboles. Conceptos Generales..
ESTRUCTURAS DE DATOS AVANZADAS
Cont. Arbol Binario de Búsqueda
Árboles balanceados AVL
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
ÁRBOLES DE EXPRESION.
Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente,
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
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.
Diplomado en Informática Aplicada
Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana.
Tema Nº4.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Listas circulares.
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 I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
ARBOLES ESTRUCTURAS DE DATOS.
7.  El TDA Diccionario.
Estructura de Datos y Algoritmos
Árboles binarios de búsqueda
Arboles M.C. José Andrés Vázquez FCC/BUAP
ARBOLES ESTRUCTURAS DE DATOS.
Árboles B M.C. José Andrés Vázquez Flores Estructuras de Datos / Primavera 2014.
Definición, propiedades, recorridos x a q yb w e vu fo.
Almacenamiento y Recuperacion de Información- Arbol AVL
Árboles AVL cont..
Árboles Recomendado: 1. Nivelación Funciones
LISTA DOBLEMENTE ENLAZADA
Árboles de Búsqueda Binaria
Unidad 6: Árboles.
Punteros, referencias Listas enlazadas Arboles
INSTITUTO TECNOLOGICO DE APIZACO
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
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:
M.C. Meliza Contreras González
Laboratorio de programación
Matemáticas Discretas MISTI
Listas Dinámicas.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Árboles binarios. Algoritmos básicos
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
Á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 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 programa) Entre estas tenemos: Lineales (listas enlazadas, pilas y colas) No lineales (arboles binarios y grafos o redes)

¿Qué es un Árbol? Es una estructura de datos jerárquica. La relación entre los elementos es de uno a muchos.

Terminología Nodo: Cada elemento en un árbol. Nodo Raíz: Primer elemento agregado al árbol. Nodo Raíz A B C D E F G K H

Más terminología Nodo Padre: Se le llama así al nodo predecesor de un elemento. Nodo Hijo: Es el nodo sucesor de un elemento. Hermanos: Nodos que tienen el mismo nodo padre. A Nodo Padre C B F y G son Nodos Hijos de C F y G son hermanos D E G F K H

Más terminología Nodo Hoja: Aquel nodo que no tiene hijos. A B C D E G F D, H, F y K son Nodos Hojas K H

Más terminología Subárbol: Todos los nodos descendientes por la izquierda o derecha de un nodo. A B C D E G F Subárbol derecho de C K H Subárbol izquierdo de C

Altura y Niveles Altura del árbol = 4 Nivel 0 Nivel 1 Nivel 2 Nivel 3 C Nivel 1 D G E F Nivel 2 K H Nivel 3 La Altura es la cantidad de niveles.

Árbol Binario de Búsqueda (ABB) Este tipo de árbol permite almacenar información ordenada. Reglas a cumplir: Cada nodo del árbol puede tener 0, 1 ó 2 hijos. Los descendientes izquierdos deben tener un valor menor al padre. Los descendientes derechos deben tener un valor mayor al padre.

Ejemplos de ABB… 21 30 13 33 33 21 5 36 25 41 18 32 40 43 15

¿Por qué no son ABB? 21 5 13 33 6 1 22 17 18 4 25 2 15 40

Implementación de un ABB… class NodoArbol { public: int info; NodoArbol *izq, *der; NodoArbol( ); NodoArbol(int dato); }; NodoArbol(void) { izq = der = NULL; } NodoArbol(int dato) { info = dato; izq = der = NULL; }

Continuación… class ABB { private: NodoArbol *raiz; public: ABB( ); // constructor ~ABB( ); // destructor //otros métodos };

Proceso para buscar un nodo... Buscar el 25 Paso 1 ¿El 25 es mayor o menor que el 21? Paso 2 13 21 10 18 25 40 33 21 ¿El 25 es mayor o menor que el 33? 13 33 40 10 18 25 Paso 3 21 13 33 40 10 18 25 Encontrado

Implementación de la búsqueda ... p=raiz; while (p != NULL) { if (p->info == valor) return p; else p=(p->info > valor? p->izq: p->der); } return NULL; … P contiene la dirección del nodo que tiene el valor buscado Equivalente a: if ( p -> info > valor ) p = p -> izq; else p = p-> der; No se encontró el valor por lo que se regresa un NULL

Proceso para agregar nodos... Reglas: El valor a insertar no existe en el árbol. El nuevo nodo será un Nodo Hoja del árbol. Procedimiento Buscar el Nodo Padre del nodo a agregar. Agregar el nodo hoja.

Ejemplo Agregar el valor 26 Paso Paso 1 2 Paso Paso 3 4 13 21 10 18 25 ¿El 26 es mayor o menor que el 21? Paso 2 13 21 10 18 25 40 33 21 ¿El 26 es mayor o menor que el 33? 13 33 40 10 18 25 Paso 3 Paso 4 21 21 33 13 33 13 40 40 10 18 25 10 18 25 Se encontró el Nodo Padre Agregar el nodo 26

Comentarios importantes.... El orden de inserción de los datos, determina la forma del ABB. ¿Qué pasará si se insertan los datos en forma ordenada? La forma del ABB determina la eficiencia del proceso de búsqueda. Entre menos altura tenga el ABB, más balanceado estará, y más eficiente será. 10 13 Este árbol está desbalanceado porque los valores se agregaron en el siguiente orden: 10, 13, 18, 21, 25, 33, 40 18 21 25

Implementación.... bool ABB::Insertar(int valor) { NodoArbol *nuevo, *actual, *anterior; nuevo = new NodoArbol(valor); actual = raiz; anterior = NULL; while ( actual != NULL ) if ( valor == actual -> info ) return 0; anterior = actual; actual = (actual->info > valor ? actual->izq : actual->der); } if(anterior==NULL) raiz=nuevo; else { if ( anterior -> info > valor ) anterior -> izq = nuevo; else anterior -> der = nuevo; return 1; Busca el Nodo Padre. Al final, Anterior será el padre del nuevo nodo. Agrega el nodo como nodo hoja. Si Anterior es igual a NULL quiere decir que el árbol está vacío por lo que el nodo a agregar será la raíz.

Proceso para eliminar un nodo Si el nodo a eliminar es un: Nodo hoja Buscar el Nodo Padre del nodo a borrar. Desconectarlo. Liberar el nodo. Nodo con un hijo Conectar el hijo con el padre del nodo a borrar. Nodo con dos hijos Localizar el nodo predecesor o sucesor del nodo a borrar. Copiar la información. Eliminar el predecesor o sucesor según sea el caso.

Caso: Eliminar Nodo hoja Eliminar el valor 25 Paso 1 21 Nodo Padre localizado 33 13 Paso 2 40 10 18 25 21 13 33 40 10 18 25 Desconectarlo y liberar el nodo

Caso: Eliminar Nodo con un hijo Eliminar el valor 25 Paso 1 21 Nodo Padre localizado 33 13 Paso 2 40 10 18 25 21 29 13 33 25 27 30 40 10 18 29 Conectar el Nodo Padre con el Nodo Hijo y liberar el nodo. 27 30

Caso: Eliminar nodo con dos hijos Localizar el nodo predecesor o sucesor del nodo a borrar. El PREDECESOR es “el Mayor de los Menores”. El SUCESOR es “el Menor de los Mayores”. Para la implementación es igual de eficiente programar la búsqueda del predecesor que del sucesor. El valor del Predecedor (o sucesor) se copia al nodo a borrar. Eliminar el nodo del predecesor (o sucesor según sea el caso).

Predecesor El predecesor de: Es: 33 30 21 13 29 27 Uno a la IZQUIERDA y todo a la DERECHA 21 El predecesor de: Es: 33 30 21 13 29 27 33 13 40 10 25 29 27 30

Sucesor El sucesor de: Es: 21 25 33 40 29 30 Uno a la DERECHA y todo a la IZQUIERDA 21 El sucesor de: Es: 21 25 33 40 29 30 33 13 40 10 18 25 29 27 30

Implementación del.... PREDECESOR P = actual -> izq; actual apunta al nodo a borrar P = actual -> izq; while( p -> der != NULL) p=p->der; return p; SUCESOR P = actual -> der; While (p -> izq != NULL ) p=p->izq; return p;

Caso: Eliminar Nodo con dos hijos Eliminar el valor 21 utilizando el predecesor Paso 2 Paso 1 Localizar el valor a borrar 21 21 13 33 13 33 40 10 40 18 25 10 18 25 Localizar el Predecesor Paso 4 Copiar el valor del Predecesor al nodo que contenía el valor a borrar Paso 3 18 18 13 33 13 33 10 40 18 25 10 40 18 25 Desconectar y liberar el nodo del Predecesor

Caso: Eliminar Nodo con dos hijos Eliminar el valor 21 utilizando el Sucesor Paso 2 Paso 1 Localizar el valor a borrar 21 21 13 33 13 33 40 10 40 18 25 10 18 25 Localizar el Sucesor Paso 4 Copiar el valor del Sucesor al nodo que contenía el valor a borrar Paso 3 18 25 13 33 13 33 10 40 18 25 10 40 18 25 Desconectar y liberar el nodo del Sucesor