universidad centroamericana

Anuncio
UNIVERSIDAD
CENTROAMERICANA
INTEGRANTES:
LUIS CARLOS CAJINA BUSTOS
PERLA CASAYA CALERO
DANILO AVILES COREA
CARRERA: INGENIENIERA EN SISTEMAS Y
TECNOLOGIAS DE
LA INFORMACION
ASIGNATURA: ABSTRACCION Y ESTRUCTURA DE DATOS
FECHA: 04 DE DICIEMBRE DEL 2009
Universidad Centroamericana
Ingeniería en Sistemas y Tecnologías de la Información
INDICE
Introducción………………………………………………………………………….........................3
Árboles………………………………………………………………………………………………………….4
Representación de un Árbol…………………….…………………………….........................4
Árboles Binarios…………………………………………………………………………………………….4
Árboles Binarios Completos…………………………………………………………………………..5
Árbol Binario Lleno.……………………………………………………………………………………….5
Estructura de un Árbol Binario….…………………………………………………………………..5
Representación de los Árboles Binarios en C++……………………………………………..5
Operaciones Básicas con Árboles Binarios…………………………………………………….6
Conclusiones…………………………………………………………………………………………………8
Bibliografía……………………………………………………………………………………………………8
Arboles en Lenguaje de Programación
Abstracción y Estructura de Datos
2
Universidad Centroamericana
Ingeniería en Sistemas y Tecnologías de la Información
INTRODUCCIÓN
Este documento se realizó con el objetivo de brindar mayor
conocimientos sobre lo que se refiere al lenguaje en C++ con
respecto a los árboles.
Con la realización de esta investigación aseguramos haber
adquirido conocimientos sobre los arboles en C++, recopilando
información de páginas en internet calificadas para la tarea como
también libros específicos de estructuras de datos.
Arboles en Lenguaje de Programación
Abstracción y Estructura de Datos
3
Universidad Centroamericana
Ingeniería en Sistemas y Tecnologías de la Información
Árboles
Son estructuras en la que los datos se organizan conformando un orden jerárquico, los elementos
se relacionan entre sí a través de ramas, los ejemplos comunes son el árbol genealógico, un
organigrama, etc.
Algunos conceptos relacionados a los árboles son: Los árboles constan de nodos y ramas que
conectan a los nodos. El número de ramas asociados con un nodo se llaman grados de nodo. Cada
parte del árbol puede ser expresada de forma recursiva como un subárbol. El primer nodo de un
árbol se llama raíz, los nodos pueden ser padres o descendientes (hijos), los nodos que no tienen
hijos se llaman hojas.
El nivel de un nodo es su distancia a la raíz, la raíz tiene por defecto nivel cero. Un camino es una
secuencia de nodos en la que cada uno es adyacente al siguiente. La altura o la profundidad es el
nivel de la hoja del camino más largo más uno. Un subárbol es una estructura jerárquica de bajo
de un padre.
Representación de un Árbol.
Existen varias representaciones de los árboles como por ejemplo el diagrama de organización, los
niveles de profundidad o la lista con paréntesis.
Árboles Binarios.
Un árbol binario es un árbol en el que ningún nodo puede tener más de dos subárboles. Ejemplo:
Arboles en Lenguaje de Programación
Abstracción y Estructura de Datos
4
Universidad Centroamericana
Ingeniería en Sistemas y Tecnologías de la Información
Árboles Binarios Completos
Un árbol binario completo de profundidad n es un árbol en el que para cada nivel del cero al n-1
tiene un conjunto lleno de nodo y todos los nodos hojas a nivel n ocupan las posiciones más a las
izquierdas del árbol, en otras palabras los últimos nodos tienen que estar consecutivos.
Árbol Binario Lleno
Es un árbol binario completo que contiene 2n nodos en el nivel n, es decir, que tiene el máximo
número de entradas para su altura.
Un árbol degenerado es un tipo especial de árbol en el que hay sólo una hoja y cada nodo sólo
tiene un hijo, es decir, equivale una lista enlazada.
Estructura de un Árbol Binario
Se construye con nodos, cada nodo tiene un campo dato y dos punteros, un puntero al árbol
izquierdo y un puntero al árbol derecho.
Representación de los Árboles Binarios en C++
//Representación de un Nodo
typedef int TipoElemento;
typedef struct nodo{
TipoElemento dato;
struct nodo *izdo, *dcho;
}Nodo;
typedef Nodo* ArbolBinario;
//Creación de un Árbol Binario
ArbolBinario crearNodo(TipoElemento x)
{
ArbolBinario a;
a=(ArbolBinario) malloc(sizeof(Nodo));
a->dato=x;
a->dcho=a->izdo=NULL;
return a;
}
void nuevoArbol(ArbolBinario* raiz, ArbolBinario ramaIzqda,
TipoElemento x, ArbolBinario ramaDrcha)
{
Arboles en Lenguaje de Programación
Abstracción y Estructura de Datos
5
Universidad Centroamericana
Ingeniería en Sistemas y Tecnologías de la Información
*raiz=crearNodo(x);
(*raiz)->izdo=ramaIzqda;
(*raiz)->dcho=ramaDrcha;
}
Operaciones Básicas con Árboles Binarios
1- INSERCIÓN
void insertar(Nodo** raiz, TipoElemento dato)
{
if(!(*raiz))
*raiz=crearNodo(dato);
else if(dato<(*raiz)->dato)
insertar(&((*raiz)->izdo),dato);
else
insertar(&((*raiz)->dcho),dato);
}
2- BUSQUEDA
Nodo* buscar (Nodo* raiz, TipoElemento buscado)
{
if(!raiz)
return 0;
else if(buscado==raiz->dato)
return raiz;
else if(buscado<raiz->dato)
return buscar(raiz->izdo,buscado);
else
return buscar(raiz->dcho,buscado);
}
3- ELIMINACIÓN
void Borrar(Arbol *a, int dat) {
pNodo padre = NULL;
pNodo actual;
pNodo nodo;
int aux;
actual = *a;
while(!Vacio(actual)) {
Arboles en Lenguaje de Programación
Abstracción y Estructura de Datos
6
Universidad Centroamericana
Ingeniería en Sistemas y Tecnologías de la Información
if(dat == actual->dato) {
if(EsHoja(actual)) {
if(padre)
if(padre->derecho == actual) padre->derecho = NULL;
else if(padre->izquierdo == actual) padre->izquierdo = NULL;
free(actual);
actual = NULL;
return;
}
else {
/* Buscar nodo */
padre = actual;
if(actual->derecho) {
nodo = actual->derecho;
while(nodo->izquierdo) {
padre = nodo;
nodo = nodo->izquierdo;
}
}
else {
nodo = actual->izquierdo;
while(nodo->derecho) {
padre = nodo;
nodo = nodo->derecho;
}
}
/* Intercambio */
aux = actual->dato;
actual->dato = nodo->dato;
nodo->dato = aux;
actual = nodo;
}
}
else {
padre = actual;
if(dat > actual->dato) actual = actual->derecho;
else if(dat < actual->dato) actual = actual->izquierdo;
}
}
}
Arboles en Lenguaje de Programación
Abstracción y Estructura de Datos
7
Universidad Centroamericana
Ingeniería en Sistemas y Tecnologías de la Información
Conclusiones
Los árboles son estructuras en las cuales los datos se organizan conformando un orden
jerárquico, los elementos se relacionan entre sí a través de ramas.
Los árboles a pesar de ser un poco complejo, son muy eficiente a la hora del manejo de
los datos.
Bibliografía

Joyanes Aguilar, Luis, Zahonero Martínez, Ignacio (1999). Estructuras de Datos:
Algoritmos, Abstracción y Objetos. Madrid: McGraw-Hill.
ISBN: 84-481-2442-6 (UCA)

Joyanes Aguilar, Luis (2000). Programación en C++: Algoritmos, Estructuras de
Datos y Objetos. Madrid: McGraw-Hill.
ISBN: 84-481-2487-1 (UCA)

Joyanes Aguilar, Luis (1996). Fundamentos de Programación: Algoritmos y
Estructuras de Datos, 2da. Edición. Madrid: McGraw-Hill.
SBN: 84-481-0603-2 (UCA)

www.lawebdelprogramador.com

www.c.conclase.net


www.elrincondelprogramador.com
www.programacion.com
Arboles en Lenguaje de Programación
Abstracción y Estructura de Datos
8
Descargar