Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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