Cont. Arbol Binario de Búsqueda

Slides:



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

Diseño y análisis de algoritmos
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
Searching data in Arrays COMP 242. Linear Search Algoritmo: Comenzando con el primer elemento, se compara cada uno con el valor a buscar y se detiene.
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
GRAFOS ESTRUCTURAS DE DATOS.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Utilización de un TAD Arbol.
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Programación y Estructuras de Datos
Igor Santos Grueiro. Muchos objetos tienen CLAVE.
Operaciones sobre un árbol
Árboles binarios. Algoritmos básicos
Tema 4 Árboles. Árbol sobre matriz.
Tema 4 Árboles. Conceptos Generales..
SOBRECARGA DE FUNCIONES
Marzo 2007 Lenguajes Visuales Clase III.
Árboles balanceados AVL
Programación II Colas Igor Santos Grueiro.
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
ÁRBOLES DE EXPRESION.
Definiciones: conjuntos, grafos, y árboles
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,
Arboles (Trees) Arboles Arboles binarios Recorridos de árboles
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.
Estructuras dinámicas de datos, TAD Lista, parte 2
Arboles Binarios de expresiones
Árboles.
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Definiciones: conjuntos, grafos, y árboles
Ordenamiento, Heapsort y Colas de prioridad
Estructura de Datos En C++
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.
Ordenación y Búsquedas1UVM Ordenación y Búsqueda.
Estructura de Datos y Algoritmos
Algoritmos de búsqueda
Árboles binarios de búsqueda
Arboles M.C. José Andrés Vázquez FCC/BUAP
ARBOLES ESTRUCTURAS DE DATOS.
Pilas y Colas Estructuras de Datos.
Árboles.

Árboles AVL cont..
Árboles1UVM Árboles. 2UVM Árboles3UVM 6.1 Objetivos El estudiante manejará el tad Arbol, sobre memoria dinámica.
Árboles Binarios Estructuras de Datos.
Árboles de Búsqueda Binaria
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
Arboles binarios de búsqueda. Elemento estándar: Cuenta class Cuenta { public: int codigo; char nombreCliente[50]; float saldo; public: Cuenta(); Cuenta(int.
Diccionarios El TDA diccionario Búsqueda binaria
Unidad 6: Árboles.
Definiciones: conjuntos, grafos, y árboles
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
1 Árboles de Búsqueda Binaria Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Punteros, referencias Listas enlazadas Arboles
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:
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
Árboles binarios. Algoritmos básicos
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2016
Árboles (Trees) Árboles Árboles binarios Recorridos de árboles
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:

Cont. Arbol Binario de Búsqueda

Algoritmo para hallar el padre de un nodo Se agrega a la clase ArbolBin las siguientes definiciones: Nodo *buscarPadre(int dato); Nodo *padre(Nodo *r, int key);

Implementación Nodo *ArbolBin::buscarPadre(int key) { if( ! raiz) return NULL; //Si árbol vacío if( key == raiz->dato.key() ) //Si el buscado es la raíz cout<<"El dato no tiene padre ya que es la raíz"; return NULL; } else //Búsqueda del padre return padre(raiz, key);

Nodo *ArbolBin::padre(Nodo *r, int key) { if( r->hijoIzq && (key < r->dato.key()) ) /* Si tiene hijo izquierdo no nulo y la clave del buscado es menor que la clave de r */ if( (r->hijoIzq)->dato.key()==key ) /*Si el hijo de la izquierda es el buscado entonces r es el padre */ return r; else return padre( r->hijoIzq, key ); //Seguir buscando… }

else if( r->hijoDer && (key > r->dato.key()) ) /*Si tiene hijo derecho no nulo y la clave del buscado es mayor que la clave de r */ { if( (r->hijoDer)->dato.key()==key ) /* Si el hijo de la derecha es el buscado entonces r es el padre */ return r; else return padre( r->hijoDer, key); } cout<<"Hijo no encontrado"; //En caso de no encontrarlo return NULL;

En el main(): //Prueba del algoritmo para búsqueda del padre: Nodo *mipadre; mipadre = miarbol.buscarPadre(20); if(!mipadre) cout<< "Dato no hallado o es la raíz del árbol"<<endl; else cout << (mipadre ->dato).codigo; mipadre = miarbol.buscarPadre(10); mipadre = miarbol.buscarPadre(30);

Ahora se verá un algoritmo no recursivo para ver si un dato está o no en el árbol, Se agrega a la clase ArbolBin las siguientes definiciones: Nodo *findkey(int key); Nodo *buscar_dato(Nodo *r, int key);

Implementación: Nodo *ArbolBin::findkey(int key) { return buscar_dato(raiz, key); } En este caso findkey es simplemente una función “de paso” que traspasa el control a la función buscar_dato enviandole la raíz del árbol

Nodo *ArbolBin::buscar_dato(Nodo *r, int key) { while (r!=NULL) if( (r->dato).key()==key ) //Si lo encuentra actual = r; return r; } else if( (r->dato).key()>key ) //Si key es menor que la clave de r r= r ->hijoIzq; else r = r ->hijoDer; return NULL; //No lo encontró

En el main(): //Prueba del algoritmo de búsqueda Nodo *buscado; buscado=miarbol.findkey(10); if(!buscado) cout <<"Dato no está en el árbol"<< endl; else cout << "El saldo de la cuenta es:" << buscado->dato.saldo; buscado=miarbol.findkey(20); buscado=miarbol.findkey(80);