Está en la página 1de 5

6/5/2015

Cdigo Fuente C++: Arbol binario de busqueda


Ms

Siguiente blog

Crear blog

Acceder

Cdigo Fuente C++


Este blog tiene el propsito de difundir algoritmos de programacin de C++, como en las palabras de un
viejo dicho entre los usuarios de este paradigma de programacin: no hay nada que no se pueda hacer con
C++ es por eso espero que toda la informacin recopilada en esta pgina les sirva como gua en el
desarrollo de sus proyectos. Y si les gusta lo que ven por favor compartan.

s bado, 26 de oc tubr e de 2013

Charle un poco con el administrador

Arbol binario de busqueda


El programa genera un arbol binario, captura caracteres
y los introduce en el arbol, despues muestra los
recorridos en preorden, inorden y postorden. Maneja
memoria dinamica.
//PROGRAMA QUE CAPTURA UNA CADENA DE CARACTERES DE MAXIMO 200 ELEMENTOS Y
//CREA UN ARBOL DE BUSQUEDA CON LOS CARACTERES DE LA CADENA Y REALIZA RECORRIDOS
// EN PREORDEN,ENTREORDEN Y POSTORDEN.

What do you think about


New Orleans?

#include<stdio.h>

say

#include<conio.h>
#include<stdlib.h>
#include<string.h>

Buscar codigo fuente

Buscar

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
struct nodoarbol{

//ESTRUCTURA DEL ARBOL

struct nodoarbol *izqnodo;

Arbol binario de busqueda

int info;

Agenda Telefonica

struct nodoarbol *dernodo;

Puzzle

};
typedef struct nodoarbol NODO;

Lo mas visto

Mtodo Gauss-Jordan
//DEFINICION DE TIPO NODO

typedef NODO *ARBOL;

Palndromo

//DECLARACION DE VARIABLE PUNTERO A NODO

Archivo del blog


/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

2013 (34)
octubre (34)

void insertanodonuevo(ARBOL *,int);

//DECLARACION DE FUNCIONES

void inorden(ARBOL);
void preorden(ARBOL);

http://codigofuentecpp.blogspot.com/2013/10/arbol-binario-de-busqueda_25.html

Busqueda
Da de la semana
Base de datos de alumnos
Elimina archivo o directorio

1/5

6/5/2015

Cdigo Fuente C++: Arbol binario de busqueda


void postorden(ARBOL);

Codificacin de Huffman

void treefree(ARBOL);

Batalla Naval

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

Calculadora
Semforo
Reloj Binario

/*-----------------------<FUNCION PRINCIPAL>--------------------------------*/

Menu UP-DOWN
Conversor entre bases (hexadecial a
binario y otra...
Traductor de ingles a espaol
Analizador lexico

main(){

Algoritmo SHA-1

int i;

Calcula la letra del DNI

//CONTADOR

char newnod,chain[200],elementos;

//DECLARACION DE CADENA,BANDERA Y VARIABLE QUE CONTIENE

Array de estructura
Archivos secunciales

EL NUEVO VALOR A INSERTAR EN EL ARBOL

Comprobar si un nmero es primo

clrscr();

Palndromo

ARBOL raiz=NULL;

//DECLARACION DE VARIABLE DE TIPO ARBOL

printf("\n\n\tIntroduzca una cadena de caracteres (max. 200 elementos):\n");

Calcular permetro y rea de un crculo


Histograma de un arreglo de carcteres
sin if ni c...
Resolucin de ecuaciones de segundo
grado

gets(chain);
elementos=strlen(chain);

//CHECA EL TAMAO DE LA CADENA Y ESTABLECE EL NUMERO DE NODO

S DEL ARBOL

Operaciones matemticas bsicas


Factura sencilla

for(i=1;i<=elementos;i++)

Interseccin recta- circunferencia


Transcribir nmeros a letras

newnod=chain[i-1];

Clculo de inters bancario


insertanodonuevo(&raiz,newnod);

ASCII Art
Matriz de randoms
Agenda Telefonica

Puzzle
printf("\n\n preorden \t");
preorden(raiz);
printf("\n\n inorden

Fibonachi
//LLAMADO A FUNCION DE RECORRIDO EN PREORDEN

Arbol binario de busqueda

\t");

inorden(raiz);

Mtodo Gauss-Jordan

//LLAMADO A FUNCION DE RECORRIDO EN INORDEN

Visitas
printf("\n\n postorden \t");
postorden(raiz);

//LLAMADO A FUNCION DE RECORRIDO EN POSTORDEN

getch();
treefree(raiz);
raiz=NULL;

//LIBERACION DE MEMORIA DEL ARBOL.

983
Comparte en
facebook

//ASIGNACION DE UN VALOR NULO A LA RAIZ.

return 0;

Share
View stats

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
/*-CREA UN NUEVO NODO Y COLOCA LOS VALORES DEL NUEVO ELEMENTO EN LA POSICION CORRESPONDIENTE
*/

void insertanodonuevo(ARBOL *rarbol,int nuevo){


if(*rarbol==NULL){

//CREACION DE UN NUEVO NODO

*rarbol=(NODO *)malloc(sizeof(NODO));
if(*rarbol!=NULL){

http://codigofuentecpp.blogspot.com/2013/10/arbol-binario-de-busqueda_25.html

2/5

6/5/2015

Cdigo Fuente C++: Arbol binario de busqueda


//ASIGNACION DE VALORES NUEVOS EN EL NODO NUEVO
(*rarbol)->info=nuevo;
(*rarbol)->izqnodo =NULL;
(*rarbol)->dernodo=NULL;
}
else{printf("\n
Memoria No Disponible !!!!\n");}
}
else
if(nuevo<(*rarbol)->info)

//checa si el elemento nuevo es mayor que el elemento pad

re
insertanodonuevo(&((*rarbol)->izqnodo),nuevo);

//coloca el elemento a la iz

quierda del padre o raiz


else
if(nuevo>(*rarbol)->info)

//checa si el elemento nuevo es menor que el elem

ento padre
insertanodonuevo(&((*rarbol)->dernodo),nuevo);

//coloca el element

o a la derecha del padre o raiz


}
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
//FUNCION ITERATIVA LA CUAL RECORRE EL ARBOL IMPRIMIENDO SIEMPRE EL VALOR
//QUE CONTIENE LA RAIZ,DESPUES LA RAMA IZQUIERDA,LUEGO LA RAMA DERECHA,SIEMPRE
//Y CUANDO LA RAIZ SEA DIFERENTE DE UN VALOR NULO, SI ES NULO SALTA A LA SIGUIENTE INSTRUCCIO
N.
void preorden(ARBOL rarbol){
if(rarbol!=NULL){
printf(" %c ",rarbol->info);
preorden(rarbol->izqnodo);
preorden(rarbol->dernodo);

}
}
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
//FUNCION ITERATIVA LA CUAL RECORRE EL ARBOL BUSCANDO EL NODO MAS IZQUIERDO
//QUE CONTIENE EL ARBOL O SEA HASTA QUE LA RAMA DEL ULTIMO NODO SEA NULO,LUEGO LA IMPRIME,DES
PUES
//DESPUES LA RAIZ DEL SUB-ARBOL,Y LUEGO EL NODO DE LA DERECHA.

void inorden(ARBOL rarbol){


if(rarbol!=NULL){
inorden(rarbol->izqnodo);
printf(" %c ",rarbol->info);
inorden(rarbol->dernodo);

http://codigofuentecpp.blogspot.com/2013/10/arbol-binario-de-busqueda_25.html

3/5

6/5/2015

Cdigo Fuente C++: Arbol binario de busqueda


}

}
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
//FUNCION ITERATIVA LA CUAL RECORRE EL ARBOL BUSCANDO EL NODO QUE ESTA MAS A LA IZQUIERDA
//LUEGO EL NODO DE LA DERECHA Y LUEGO LA RAIZ DE ESE SUB-ARBOL
void postorden(ARBOL rarbol){
if(rarbol!=NULL){
postorden(rarbol->izqnodo);
postorden(rarbol->dernodo);
printf(" %c ",rarbol->info);
}
}
/**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
//FUNCION ITERATIVA IDENTICA AL RECORRIDO EN POSTORDEN LA UNICA DIFERENCIA
//ES QUE EN VEZ DE IMPRIMIR EN PANTALLA EL VALOR DE UN NODO ESTE ES
//ELIMINADO DEL ARBOL LIBERANDO LA MEMORIA CON LA FUNCION free(), ELEGI ESTA
//FORMA YA QUE SE ELIMINA PRIMERO LOS NODOS HIJO DE EL SUB-ARBOL Y LUEGO LA RAIZ
//YA QUE SI SE ELIMINA LA RAIZ PRIMERO, LOS DATOS DE LOS HIJOS SE DESCONECTAN
//DEL ARBOL PERO LA MEMORIA QUE OCUPABAN SIGUE SIENDO UTILIZADA Y DE ESTA FORMA
//SE ELIMINA EL ARBOL DE ABAJO HACIA ARRIBA (O SEA DE LOS HIJOS A LA RAIZ).

void treefree(ARBOL rarbol){


if(rarbol!=NULL){
treefree(rarbol->izqnodo);
treefree(rarbol->dernodo);
free(rarbol);
}

Publicado por Cristian Gutierrez en 1:00

Recomendar esto en Google


Etiquetas: Arbol, Binario, busqueda, c++, codigo, de, fuente, programacion

Entrada ms reciente

Pgina principal

Aclaracion

Al ser codigos recolectados de todos lados es posible que haya ciertos errores en los mismos, despues de todo la idea es brindar una guia.

http://codigofuentecpp.blogspot.com/2013/10/arbol-binario-de-busqueda_25.html

4/5

6/5/2015

Cdigo Fuente C++: Arbol binario de busqueda


Con la tecnologa de Blogger.

http://codigofuentecpp.blogspot.com/2013/10/arbol-binario-de-busqueda_25.html

5/5