#ifndef ARBOLES_H_INCLUDED
#define ARBOLES_H_INCLUDED
#include <stdio.h>
#include <conio.h>
#include <windows.h>
typedef int elemento;
typedef struct nodo{
elemento dato;
nodo *izq, *der;
};
typedef nodo *ap;
typedef nodo *posicion;
void inicializa (ap &r)
{
r=NULL;
}
int vacia (ap r)
{
if(r==NULL)
return 1;
return 0;
}
void inserta (elemento x, ap &r)
{
if(vacia(r))
{
r = new nodo;
r->dato=x;
r->izq=NULL;
r->der=NULL;
}
else
{
if(x>r->dato)
inserta(x,r->der);
else
if(x<r->dato)
inserta(x,r->izq);
else
printf("Dato repetido\n");
}
}
posicion buscar (elemento x, ap r)
{
posicion pos;
pos=r;
if(pos==NULL || x==pos->dato)
return pos;
else
{
if(x<pos->dato)
return buscar(x,pos->izq);
else
return buscar(x,pos->der);
}
}
//Mayor de los menores
void eliminar(elemento x,ap &r)
{
ap aux, aux1, aux2;
int bandera=0;
if(r == NULL)
printf("Elemento no encontrado");
else
{
if(x<r->dato)
eliminar(x,r->izq);
else
if(x>r->dato)
eliminar(x,r->der);
else
{
aux2=r;
if(aux2->der==NULL)
r=aux2->der;
else
{
if(aux2->izq==NULL)
r=aux2->der;
else
{
aux=r->izq;
while(aux->der!=NULL)
{
aux1=aux;
aux=aux->der;
bandera=1;
}
r->dato=aux->dato;
aux2=aux;
if(bandera==1)
aux1->der=aux->izq;
else
r->izq=aux->izq;
}
}
printf("**Eliminado: %i**",aux2->dato);
delete(aux2);
}
}
}
elemento maximo (posicion pos)
{
while(pos->der!=NULL)
pos=pos->der;
return pos->dato;
}
elemento minimo (posicion pos)
{
while(pos->izq!=NULL)
pos=pos->izq;
return pos->dato;
}
void pre_orden(ap r)
{
if(r!=NULL)
{
printf("%d\n",r->dato);
pre_orden(r->izq);
pre_orden(r->der);
}
}
void in_orden(ap r)
{
if(r!=NULL)
{
in_orden(r->izq);
printf("%d\n",r->dato);
in_orden(r->der);
}
}
void pos_orden(ap r)
{
if(r!=NULL)
{
pos_orden(r->izq);
pos_orden(r->der);
printf("%d\n",r->dato);
}
}
void anula(ap &r)
{
if(r!=NULL)
{
anula(r->izq);
anula(r->der);
delete(r);
}
}
#endif // ARBOLES_H_INCLUDED
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.