Está en la página 1de 4

1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

#include <iostream.h>
#include <conio.h>
struct arbol
{
int dato;
arbol *i,*d;
}*elemento, *aux, *cabecera, *ant, *aux2, *ant2;
int dato;
int buscar(void);
void insertar(void);
void buscarmenmay(void);
void buscarmaymen(void);
void eliminar(void);
void main(void)
{
int y,opc;
do
{
clrscr();
y=10;
gotoxy(10,y++);
cout<<"0 - Salir";
gotoxy(10,y++);
cout<<"1 - Buscar";
gotoxy(10,y++);
cout<<"2 - Insertar";
gotoxy(10,y);
cout<<"3 - Borrar";
gotoxy(10,y+=5);
cout<<"Cual es su opcion: ";
cin>>opc;
switch(opc)
{
case 0: break;
case 1: cout<<"\n\nDato a buscar: ";
cin>>dato;
if(buscar())
cout<<"\n\nDato existe";
else
cout<<"\n\nDato inexistente";
break;
case 2: cout<<"\n\nDato a insertar: ";
cin>>dato;
insertar();
cout<<"\n\nDato Insertado";
break;
case 3: cout<<"\n\nDato a borrar: ";
cin>>dato;
eliminar();
break;
default: cout<<"\n\nOpcion incorrecta";
}
if(opc) getch();
}while(opc);
}

51 int buscar(void)
{
52
if(!cabecera)
53
{
54
cout<<"No hay arbol";
return(0);
55
}
56
ant=NULL;
57
aux=cabecera;
58
while(aux)
59
{
if (dato==aux->dato)
60
return(1);
61
else
62
{
63
ant=aux;
if (dato>aux->dato)
64
aux=aux->d;
65
else
66
aux=aux->i;
67
}
68
}
return(0);
69
}
70
71
void insertar(void)
72
{
73
if(!cabecera)
74
{
cabecera=new(arbol);
75
cabecera->dato=dato;
76
cabecera->d=NULL;
77
cabecera->i=NULL;
78
return;
}
79
if (!buscar())
80
{
81
aux=new(arbol);
82
aux->dato=dato;
83
aux->i=NULL;
aux->d=NULL;
84
if(dato>ant->dato)
85
ant->d=aux;
86
else
87
ant->i=aux;
}
88
else
89
cout<<"\n\nDato existente";
90
}
91
92 void buscarmenmay(void)
93
{
aux2=aux->d;
94
ant2=aux;
95
while(aux2->i)
96
{
97
ant2=aux2;
98
aux2=aux2->i;
}
99
100 aux->dato=aux2->dato;
if(aux2->d)

101 ant2->i=aux2->d;
102 delete(aux2);
ant2->d=NULL;
103 }
104
105 void buscarmaymen(void)
106 {
107 aux2=aux->i;
ant2=aux;
108 while(aux2->d)
109 {
110 ant2=aux2;
111 aux2=aux2->d;
112 }
aux->dato=aux2->dato;
113 if(aux2->i)
114 ant2->d=aux2->i;
115 delete(aux2);
116 ant2->i=NULL;
117 }
118 void eliminar(void)
119 {
120 if(!buscar())
121 {
122 cout<<"\n\nElemento no encontrado.";
return;
123 }
124 if(aux->d==NULL && aux->i==NULL)
125 {
126 if(ant->dato>dato)
127 ant->i=NULL;
else
128 ant->d=NULL;
129 delete(aux);
130 }
131 else
132 if(aux->d!=NULL)
buscarmenmay();
133 else
134 buscarmaymen();
135 cout<<"\n\nElemento Borrado";
136 }
137
138
139
140
141
142
143
144
145
146
147
148
149
150

151
152
153
154
155
156
157
158
159
160
161
162
163
164

También podría gustarte