Como puedo eliminar el nodo raiz de un arbol binario?
Publicado por Salvador (12 intervenciones) el 20/06/2020 23:52:15
Tengo un problema hice un método para eliminar nodos de un árbol binario pero al momento de intentar borrar el nodo raíz no funciona, pero si funciona cuando borro cualquier otro nodo, alguien que me pueda decir cual es mi error ?
código:
código:
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
51
52
53
54
55
56
57
public NodoArbol elimina(String str){
NodoArbol d=derecho,i=izquierdo,aux1,aux2,aux3,ret;//se declara los apuntadores de ramas
int aux=str.compareTo(nombre);
if (aux==0){
if( (derecho!=null) && (null!=izquierdo) ){
aux1= izquierdo;
if(aux1.derecho==null){
aux1.derecho=derecho;
return aux1;
}else{
while(aux1!=null){
if(aux1.derecho.derecho==null){
if(aux1.derecho.izquierdo==null){
d=aux1.derecho.derecho;
i=aux1.derecho.izquierdo;
aux2=aux1.derecho;
aux1.derecho=null;
return aux2;
}else{
aux3=aux1.derecho.izquierdo;
d=aux1.derecho.derecho;
i=aux1.derecho.izquierdo;
aux2=aux1.derecho;
aux3=aux1.derecho;
return aux2;
}
}
aux1=aux1.derecho;
}
return this;
}
}
ret= (izquierdo==null)? derecho:izquierdo;
return ret;
}
if(aux<0){
if(izquierdo!=null){
izquierdo= izquierdo.elimina(str);
return this;
}else{//entonces izquierdo es nulo, y si es nulo entonces no se encontro
System.out.println("No se encuentra el valor " + str + " en el arbol.");
return this ;
}
}else{
if(aux>0){
if(derecho !=null){
derecho= derecho.elimina(str);
return this;
}else{//entonces derecho es nulo, y si es nulo entonces no se encontro
System.out.println("No se encuentra el valor " + str + " en el arbol.");
return this;
}
}
}
return this;
}
Valora esta pregunta


0