Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Plain Text by Elsy ( 12 years ago )
public class ArbolAVL {
public void rotacionID() {
NodoAVL padre = nodo.getPadre();
NodoAVL P = nodo;
NodoAVL Q = (NodoAVL) P.getIzq();
NodoAVL R = (NodoAVL) Q.getDer();
NodoAVL B = (NodoAVL) R.getIzq();
NodoAVL C = (NodoAVL) R.getDer();
if (Padre != null) {
if (Padre.getDer() == nodo) {
Padre.setDer(R);
} else {
Padre.setIzq(R);
}
} else {
raiz = R;
}
Q.setDer(B);
P.setIzq(C);
R.setIzq(Q);
R.setDer(P);
R.setPadre(Padre);
P.setPadre(R);
Q.setPadre(R);
if (B != null) {
B.setPadre(Q);
}
if (C != null) {
C.setPadre(P);
}
switch (R.getFE()) {
case -1:
Q.setFE(0);
P.setFE(1);
break;
case 0:
Q.setFE(0);
P.setFE(0);
break;
case 1:
Q.setFE(-1);
P.setFE(0);
break;
}
R.setFE(0);
}
public void rotacionDI() { //volvetear IZq por Der
NodoAVL padre = nodo.getPadre();
NodoAVL P = nodo;
NodoAVL Q = (NodoAVL) P.getDer();
NodoAVL R = (NodoAVL) Q.getIzq();
NodoAVL B = (NodoAVL) R.getDer();
NodoAVL C = (NodoAVL) R.getIzq();
if (Padre != null) {
if (Padre.getIzq() == nodo) {
Padre.setIzq(R);
} else {
Padre.setDer(R);
}
} else {
raiz = R;
}
Q.setIzq(B);
P.setDer(C);
R.setDer(Q);
R.setIzq(P);
R.setPadre(Padre);
P.setPadre(R);
Q.setPadre(R);
if (B != null) {
B.setPadre(Q);
}
if (C != null) {
C.setPadre(P);
}
switch (R.getFE()) {
case -1:
Q.setFE(0);
P.setFE(1);
break;
case 0:
Q.setFE(0);
P.setFE(0);
break;
case 1:
Q.setFE(-1);
P.setFE(0);
break;
}
R.setFE(0);
}
public static void main(String[] args) {
Arbol AVL = new ArbolAVL(5);
arbol.insertar(3);
arbol.insertar(4);
arbol.inOrden();
}
}
Revise this Paste