Arboles binarios de búsqueda. Elemento estándar: Cuenta class Cuenta { public: int codigo; char nombreCliente[50]; float saldo; public: Cuenta(); Cuenta(int.

Slides:



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

ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Listas enlazadas c++ Prof. Franklin Cedeño.
Programación II Listas
Estructuras de datos y algoritmos
Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;
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
Procesadores de Lenguajes I
Árboles binarios. Algoritmos básicos
Tratamiento de listas en Java
Tema 4 Árboles. Árbol sobre matriz.
Tema 4 Árboles. Conceptos Generales..
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Implementación de Listas
Marzo 2007 Lenguajes Visuales Clase III.
Cont. Arbol Binario de Búsqueda
Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;
Programación II Colas Igor Santos Grueiro.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Á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,
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
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.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Tema 9 Estructuras.
Árboles.
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
ARBOLES ESTRUCTURAS DE DATOS.
Estructura de Datos y Algoritmos
Árboles binarios de búsqueda
Arboles M.C. José Andrés Vázquez FCC/BUAP
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
ARBOLES ESTRUCTURAS DE DATOS.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Pilas y Colas Estructuras de Datos.
Árboles.

Árboles AVL cont..
Árboles Binarios Estructuras de Datos.
LISTA DOBLEMENTE ENLAZADA
Árboles de Búsqueda Binaria
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Estructuras de Datos Ejemplos Recursión.
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Arreglos de Objetos.
Punteros, referencias Listas enlazadas Arboles
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
Algoritmos y estructura de datos en I.O.
R ECORRIDO DE ÁRBOLES BINARIOS POR AMPLITUD O POR NIVELES Elaborado por: Luis Alberto Fonseca Esquivel Eduardo Acosta Casillas.
Arboles Binarios.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
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.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: LISTAS.
Árboles binarios. Algoritmos básicos
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
LISTAS..
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
Á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:

Arboles binarios de búsqueda

Elemento estándar: Cuenta class Cuenta { public: int codigo; char nombreCliente[50]; float saldo; public: Cuenta(); Cuenta(int codi,float saldoInic); int key(); };

Cuenta::Cuenta() { codigo=0; saldo=0.0; nombreCliente[0]='\0'; } Cuenta::Cuenta(int codi, float saldoInic) { codigo=codi; saldo=saldoInic; cout<<"Escriba el nombre del cliente: "; cin>>nombreCliente; } int Cuenta::key() { return codigo; }

La clase Nodo class Nodo { public: Cuenta dato; Nodo *hijoIzq; //Apuntador a hijo izquierdo Nodo *hijoDer; //Apuntador a hijo derecho public: Nodo(Cuenta nDato); //Constructor }; Nodo::Nodo(Cuenta nDato) //Constructor { dato = nDato; hijoIzq = NULL; hijoDer = NULL; }

class ArbolBin { public: Nodo *raiz; //Apunta a la raíz del arbol Nodo *actual; public: ArbolBin(); //Constructor void insertar(Cuenta dato); void buscar_lugar(Nodo *r, Cuenta dato); //Recorridos: void inorden(Nodo *r); void preorden(Nodo *r); void posorden(Nodo *r); }; La clase ArbolBin

//Constructor ArbolBin::ArbolBin() { raiz=NULL; actual=NULL; }

void ArbolBin::insertar(Cuenta dato) { if(raiz == NULL) //Si árbol vacío { raiz = new Nodo(dato); //Crea el nodo actual=raiz;//El nuevo a su vez es el actual } else //Arbol no vacío buscar_lugar buscar_lugar(raiz, dato); }

void ArbolBin::buscar_lugar(Nodo *r, Cuenta dato) { if(r) //Si puntero no nulo { if( (r->dato).key() > dato.key() )// Si clave del nuevo es menor // que la clave de r { if( !r->hijoIzq ) // Si r no tiene hijo izq { r->hijoIzq =new Nodo(dato); //Lo crea e inserta actual=r->hijoIzq; } else buscar_lugar(r->hijoIzq, dato); //Sigue buscando }

else if( (r->dato).key() < dato.key()) // Si clave del nuevo es // mayor que la clave de r { if(!r->hijoDer) // Si no tiene hijo der { r->hijoDer =new Nodo(dato); //Lo crea e inserta actual=r->hijoDer; } else buscar_lugar(r->hijoDer, dato); //Sigue buscando } else { cout<<"¡Error! referencia a nodo invalida"; } Nótese que si el nuevo está repetido en el árbol, no se inserta

//Recorridos void ArbolBin::preorden(Nodo *r) { if(r) //Si es no nulo { cout dato).codigo<<" "; preorden(r->hijoIzq); preorden(r->hijoDer); }

void ArbolBin::posorden(Nodo *r) { if(r) //Si es no nulo { posorden(r->hijoIzq); posorden(r->hijoDer); cout dato).codigo<<" "; }

void ArbolBin::inorden(Nodo *r) { if(r) //Si es no nulo { inorden(r->hijoIzq); cout dato).codigo<<" "; inorden(r->hijoDer); }

void main(void) { //Se crea un árbol ArbolBin miarbol; //Se crea una cuenta que va a ser insertada en el árbol Cuenta cuenta1(20, 1000); miarbol.insertar(cuenta1); Cuenta cuenta2(10, 2000); miarbol.insertar(cuenta2); Cuenta cuenta3(30, 5000); miarbol.insertar(cuenta3); Programa Principal para comprobar el funcionamiento

//Se ha creado un árbol con raíz 20, //hijo izquierdo 10 e hijo derecho 30 //Ahora comprobemos con los recorridos: cout<<endl<<"Inorden: "; miarbol.inorden(miarbol.raiz); //Imprimió cout<<endl<<"Preorden: "; miarbol.preorden(miarbol.raiz); //Imprimió cout<<endl<<"Posorden: "; miarbol.posorden(miarbol.raiz); //Imprimió }