#include <stdio.h>
#include <conio.h>
#include <iostream>
struct nodo{
float dato;
nodo *der;
nodo *izq;
};
nodo *arbol = NULL;
nodo *crearnodo(float);
void insertarnodo(nodo *&, float);
void mostrarnodo(nodo *&, float);
void mostrarArbol(nodo *, float);
bool buscar(nodo *, float);
void preorden(nodo *);
void inorden(nodo *);
void postorden (nodo *);
void menu();
main(){
menu();
}
void menu(){
system("color f9");
int opc,contador=0;
float dato;
do{
printf("MENU \n");
printf("1. Crear nuevo nodo \n");
printf("2. Mostrar el arbol \n");
printf("3. buscar un elemento en el arbol \n");
printf("4. Recorrer el arbol en pre-orden \n");
printf("5. Recorrer el arbol en in-orden \n");
printf("6. Recorrer el arbol en Post-orden \n");
printf("7. salir \n");
printf("digite una opcion: \n");
scanf("%d",&opc);
switch(opc){
case 1:printf("digite un numero: \n");
scanf("%f",&dato);
insertarnodo(arbol,dato);
printf("\n");
system ("pause");
break;
case 2: printf("El arbol es: \n");
mostrarArbol(arbol,contador);
printf("\n");
system ("pause");
break;
case 3: printf("\n Digite el elemento a buscar: \n");
scanf("%f",&dato);
if(buscar(arbol,dato) == true){
printf("El elemento %f se ha encontrado",dato);
}else{
printf("El elemento no fue encontrado");
}
printf("\n");
system ("pause");
case 4: printf("Pre-orden");
preorden(arbol);
printf("\n\n");
system ("pause");
break;
case 5: printf("In-orden");
inorden(arbol);
printf("\n\n");
system ("pause");
break;
case 6: printf("Post-orden");
postorden(arbol);
printf("\n\n");
system ("pause");
break;
}
system ("cls");
}while(opc!=7);
}
nodo *crearnodo(float n){
nodo *nuevo_nodo = new nodo;
nuevo_nodo->dato=n;
nuevo_nodo->der=NULL;
nuevo_nodo->izq=NULL;
return nuevo_nodo;
}
void insertarnodo (nodo *&arbol, float n){
if(arbol==NULL){
nodo *nuevo_nodo = crearnodo(n);
arbol = nuevo_nodo;
}else{
int vz = arbol->dato;
if(n<vz){
insertarnodo(arbol->izq,n);
}else{
insertarnodo(arbol->der,n);
}
}
}
void mostrarArbol(nodo *arbol, float cont){
if(arbol == NULL){
return;
}else{
if(arbol != NULL){
mostrarArbol(arbol->der,cont+1);
for (int i=0; i<cont;i++){
printf(" ");
}
printf("%f \n ",arbol->dato);
mostrarArbol(arbol->izq,cont+1);
}
}
}
bool buscar(nodo *arbol,float n) {
if(arbol == NULL){
return false;
}else{
if(arbol->dato == n ){
return true;
}else{
if(n<arbol->dato){
return buscar(arbol->izq,n);
}else{
return buscar(arbol->der,n);
}
}
}
}
void preorden (nodo *arbol){
if(arbol == NULL){
return;
}else{
printf("%f------",arbol->dato);
preorden(arbol->izq);
preorden(arbol->der);
}
}
void inorden(nodo *arbol){
if(arbol == NULL){
return;
}else{
inorden (arbol->izq);
printf("%f------",arbol->dato);
inorden(arbol->der);
}
}
void postorden(nodo *arbol){
if(arbol == NULL){
return;
}else{
postorden(arbol->izq);
postorden(arbol->der);
printf("%f------",arbol->dato);
}
}
No hay comentarios:
Publicar un comentario