Está en la página 1de 5

1 public void insertar(String vehiculo_placa, String vehiculo_marca, String

vehiculo_modelo, String vehiculo_ano, String vehiculo_color, String


vehiculo_precio, String vehiculo_TipoTransmision) {
2 boolean existe = VerificarExistenciaDeIndice(false, raiz, vehiculo_placa);
3 if (existe == false) {
4 Vehiculos_NodoB nodo = new Vehiculos_NodoB(vehiculo_placa,
vehiculo_marca, vehiculo_modelo, vehiculo_ano, vehiculo_color,
vehiculo_precio, vehiculo_TipoTransmision);
5 if (raiz == null) {
6 raiz = new Vehiculos_Rama();
7 raiz.insertar(nodo);
8 } else {
9 if (raiz.isHoja()) {
10 raiz.insertar(nodo);
11 verificarcuenta(raiz, null);
12 } else {
13 insertar_recursivo(nodo, raiz, null);
14 }
15 }
16 }
17 }
18
19 public void insertar_recursivo(Vehiculos_NodoB nodo, Vehiculos_Rama rama,
Vehiculos_Rama anterior) {
20
21 if (rama.isHoja()) {
22 rama.insertar(nodo);
23 } else {
24 Vehiculos_NodoB temp = rama.getPrimero();
25 while (temp != null) {
26
27 if (nodo.getVehiculo_placa().compareTo(temp.getVehiculo_placa()) <
0) {
28 insertar_recursivo(nodo, temp.getIzquierda(), rama);
29 break;
30 } else if (temp.getSiguiente() == null) {
31 insertar_recursivo(nodo, temp.getDerecha(), rama);
32 break;
33 }
34 temp = temp.getSiguiente();
35 }
36 }
37 //se verifica si la cuenta es menor a 5
38 //esto se hace porque el arbol es de grado 5
39 verificarcuenta(rama, anterior);
40 }
41
42 public void verificarcuenta(Vehiculos_Rama rama, Vehiculos_Rama anterior) {
43 if (rama.getCuenta() > 4) {
44 if (anterior != null) {
45 anterior.insertar(dividir(rama));
46 anterior.setHoja(false);
47 } else {
48 if (rama == raiz) {
49 Vehiculos_Rama nueva = new Vehiculos_Rama();
50 nueva.insertar(dividir(raiz));
51 raiz = nueva;
52 raiz.setHoja(false);
53 }
54 }
55 }
56
57 }
58
59 private Vehiculos_NodoB dividir(Vehiculos_Rama rama) {
60
61 Vehiculos_Rama padre = new Vehiculos_Rama();
62 Vehiculos_Rama izquierda = new Vehiculos_Rama();
63 Vehiculos_Rama derecha = new Vehiculos_Rama();
64 int n = 1;
65
66 Vehiculos_NodoB aux = rama.getPrimero();
67 while (aux != null) {
68 if (n < 3) {
69 Vehiculos_NodoB temp = new Vehiculos_NodoB(aux.getVehiculo_placa(),
aux.getVehiculo_marca(), aux.getVehiculo_modelo(),
aux.getVehiculo_ano(), aux.getVehiculo_color(),
aux.getVehiculo_precio(), aux.getVehiculo_TipoTransmision());
70 temp.setIzquierda(aux.getIzquierda());
71 temp.setDerecha(aux.getDerecha());
72
73 izquierda.insertar(temp);
74 if (temp.getIzquierda() != null || temp.getDerecha() != null) {
75 izquierda.setHoja(false);
76 }
77 } else if (n == 3) {
78 Vehiculos_NodoB temp = new Vehiculos_NodoB(aux.getVehiculo_placa(),
aux.getVehiculo_marca(), aux.getVehiculo_modelo(),
aux.getVehiculo_ano(), aux.getVehiculo_color(),
aux.getVehiculo_precio(), aux.getVehiculo_TipoTransmision());
79 padre.insertar(temp);
80 } else if (n < 6) {
81 Vehiculos_NodoB temp = new Vehiculos_NodoB(aux.getVehiculo_placa(),
aux.getVehiculo_marca(), aux.getVehiculo_modelo(),
aux.getVehiculo_ano(), aux.getVehiculo_color(),
aux.getVehiculo_precio(), aux.getVehiculo_TipoTransmision());
82 temp.setIzquierda(aux.getIzquierda());
83 temp.setDerecha(aux.getDerecha());
84 derecha.insertar(temp);
85 if (temp.getIzquierda() != null || temp.getDerecha() != null) {
86 derecha.setHoja(false);
87 }
88 }
89 n++;
90 aux = aux.getSiguiente();
91 }
92 padre.getPrimero().setDerecha(derecha);
93 padre.getPrimero().setIzquierda(izquierda);
94
95 return padre.getPrimero();
96 }
97
98 public void recorrer(String vehiculo_placa) {
99
100 recorrerrecursivo(raiz, vehiculo_placa);
101 }
102
103 public void recorrerrecursivo(Vehiculos_Rama rama, String placa) {
104
105 if (rama != null) {
106
107 Vehiculos_NodoB aux = rama.getPrimero();
108 while (aux != null) {
109
110 recorrerrecursivo(aux.getIzquierda(), placa);
111 if (aux.getVehiculo_placa().equals(placa)) {
112 System.out.print(aux.getVehiculo_placa() + " " +
aux.getVehiculo_marca() + "");
113 //System.out.println(placa);
114 }
115
116 if (aux.getSiguiente() == null) {
117 recorrerrecursivo(aux.getDerecha(), placa);
118 }
119 aux = aux.getSiguiente();
120 }
121 }
122
123 }
124
125 public boolean VerificarExistenciaDeIndice(boolean existe, Vehiculos_Rama rama,
String n) {
126
127 if (rama != null && existe == false) {
128
129 Vehiculos_NodoB aux = rama.getPrimero();
130 while (aux != null) {
131
132 if (existe) {
133 break;
134 }
135
136 existe = VerificarExistenciaDeIndice(existe, aux.getIzquierda(), n);
137
138 //aqui digo si existe o no
139 if (n.equals(aux.getVehiculo_placa())) {
140 return true;
141 }
142
143 if (aux.getSiguiente() == null) {
144 existe = VerificarExistenciaDeIndice(existe, aux.getDerecha(), n);
145 }
146 aux = aux.getSiguiente();
147 }
148
149 }
150
151 return existe;
152 }
153
154 public Vehiculos_NodoB buscarindice(String valor) {
155
156 return buscarindice_recursivo(valor, raiz, null);
157 }
158
159 private Vehiculos_NodoB buscarindice_recursivo(String placa, Vehiculos_Rama
rama, Vehiculos_NodoB aux) {
160 Primero = "";
161 if (rama != null && aux == null) {
162 Vehiculos_NodoB temp = rama.getPrimero();
163 String primeroPlaca = temp.getVehiculo_placa();
164 while (temp != null) {
165 if (aux != null) {
166 break;
167 }
168 aux = buscarindice_recursivo(placa, temp.getIzquierda(), aux);
169 //aqui digo si existe o no
170 if (placa.equals(temp.getVehiculo_placa())) {
171 Primero = primeroPlaca;
172 return temp;
173 }
174
175 if (temp.getSiguiente() == null) {
176 aux = buscarindice_recursivo(placa, temp.getDerecha(), aux);
177 }
178 temp = temp.getSiguiente();
179 }
180
181 }
182 return aux;
183 }
184
185 public void modificar(String valor, String vehiculo_marca, String
vehiculo_modelo, String vehiculo_ano, String vehiculo_color, String
vehiculo_precio, String vehiculo_TipoTransmision) {
186
187 modificar_recursivo(valor, vehiculo_marca, vehiculo_modelo, vehiculo_ano,
vehiculo_color, vehiculo_precio, vehiculo_TipoTransmision, raiz, null);
188 }
189
190 private Vehiculos_NodoB modificar_recursivo(String placa, String vehiculo_marca,
String vehiculo_modelo, String vehiculo_ano, String vehiculo_color, String
vehiculo_precio, String vehiculo_TipoTransmision, Vehiculos_Rama rama,
Vehiculos_NodoB aux) {
191
192 if (rama != null && aux == null) {
193 Vehiculos_NodoB temp = rama.getPrimero();
194 while (temp != null) {
195 if (aux != null) {
196 break;
197 }
198 aux = modificar_recursivo(placa, vehiculo_marca, vehiculo_modelo,
vehiculo_ano, vehiculo_color, vehiculo_precio,
vehiculo_TipoTransmision, temp.getIzquierda(), aux);
199 //aux = buscarindice_recursivo(placa, temp.getIzquierda(), aux);
200 //aqui digo si existe o no
201 if (placa.equals(temp.getVehiculo_placa())) {
202 temp.setVehiculo_marca(vehiculo_marca);
203 temp.setVehiculo_modelo(vehiculo_modelo);
204 temp.setVehiculo_ano(vehiculo_ano);
205 temp.setVehiculo_color(vehiculo_color);
206 temp.setVehiculo_precio(vehiculo_precio);
207 temp.setVehiculo_TipoTransmision(vehiculo_TipoTransmision);
208 JOptionPane.showMessageDialog(null, "Nodo Modificado (*ゝω・)ノ");
209 return null;
210 }
211
212 if (temp.getSiguiente() == null) {
213 aux = modificar_recursivo(placa, vehiculo_marca,
vehiculo_modelo, vehiculo_ano, vehiculo_color, vehiculo_precio,
vehiculo_TipoTransmision, temp.getDerecha(), aux);
214
215 }
216 temp = temp.getSiguiente();
217 }
218
219 }
220 //JOptionPane.showMessageDialog(null, "Nodo no modificado");
221 return null;
222 }
223
224
225
226 public boolean Eliminar(boolean existe, Vehiculos_Rama rama, String n) {
227
228 if (rama != null && existe == false) {
229
230 Vehiculos_NodoB aux = rama.getPrimero();
231 while (aux != null) {
232
233 if (existe) {
234 break;
235 }
236
237 existe = Eliminar(existe, aux.getIzquierda(), n);
238
239 //aqui digo si existe o no
240 System.out.println("antes del equals");
241 //nodo.getVehiculo_placa().compareTo(temp.getVehiculo_placa()) < 0
242 if (aux.getVehiculo_placa().compareTo(n) == 0) {
243 System.out.println("Estoy abajo equals");
244 // aqui haremos el eliminar
245 if (rama.isHoja() == true) {
246 if (aux == rama.getPrimero()) {
247 //Eliminamos el primero
248 aux.getSiguiente().setAnterior(null);
249 rama.setPrimero(aux.getSiguiente());
250 } else if (aux.getSiguiente() == null) {
251 //Eliminamos el ultimo
252 aux.getAnterior().setSiguiente(null);
253
254 } else {
255 //Eliminamos en medio
256 aux.getSiguiente().setAnterior(aux.getAnterior());
257 aux.getAnterior().setSiguiente(aux.getSiguiente());
258
259 }
260
261 } else {
262 System.out.println("No soy hoja");
263 if (aux.getIzquierda() != null) {
264 //Llamamos al metodo que busca el mas grande de la
izquierda
265 Vehiculos_NodoB Sustituto =
BuscarMasGrandeIzquirda(aux.getIzquierda(), null);
266 System.out.println("Soy el sustituto");
267 //Aqui seteamos los atributos
268 aux.setVehiculo_placa(Sustituto.getVehiculo_placa());
269 aux.setVehiculo_marca(Sustituto.getVehiculo_marca());
270 aux.setVehiculo_modelo(Sustituto.getVehiculo_modelo());
271 aux.setVehiculo_ano(Sustituto.getVehiculo_ano());
272 aux.setVehiculo_color(Sustituto.getVehiculo_color());
273 aux.setVehiculo_precio(Sustituto.getVehiculo_precio());
274
aux.setVehiculo_TipoTransmision(Sustituto.getVehiculo_Tipo
Transmision());
275 //
276
277 }
278 }
279 return true;
280 }
281
282 if (aux.siguiente == null) {
283 existe = Eliminar(existe, aux.getDerecha(), n);
284 }
285 aux = aux.siguiente;
286 }
287
288 }
289
290 return existe;
291 }
292
293 private Vehiculos_NodoB BuscarMasGrandeIzquirda(Vehiculos_Rama rama,
Vehiculos_NodoB auxiliar) {
294 System.out.println("estoy en el metodo buscar mas grande izquierda");
295 if (rama.isHoja() == true) {
296
297 System.out.println("Estoy en el inicio del if");
298 Vehiculos_NodoB aux1 = rama.getPrimero();
299 System.out.println(aux1.getSiguiente().getVehiculo_placa());
300 while (aux1.siguiente != null) {
301 aux1 = aux1.siguiente;
302
303 }
304 System.out.println("despues del while");
305 if (aux1 == rama.getPrimero()) {
306 rama.setPrimero(null);
307
308 } else {
309 aux1.getAnterior().setSiguiente(null);
310
311 }
312 System.out.println("Estoy en el final del if");
313 rama.setCuenta(rama.getCuenta() - 1);
314 return aux1;
315
316 } else {
317 System.out.println("Estoy en el else de no soy hoja");
318 Vehiculos_NodoB aux = rama.getPrimero();
319 while (aux.getSiguiente() != null) {
320 aux.setSiguiente(aux.getSiguiente());
321 }
322 auxiliar = BuscarMasGrandeIzquirda(aux.getDerecha(), auxiliar);
323
324 }
325 return auxiliar;
326 }
327
328 }
329

También podría gustarte