Sunteți pe pagina 1din 3

Int insAVL (int n)

Nodo nuevo, p, q ,s , pivote,pp;

Int llave,altura;

nuevo= new nodo (n);

if (raz == null) {

raz = nuevo;

return (1) , // el rbol solo tiene un nodo

Pp = q = null;

Pivote =p= raz;

Llave=nuevo.info;

While (p ! = null) {
If (p.bal !=0) {
Pp=q;
Pivote=p;
}
If (llave == p.info) {
Return (2) ; /* ya existe */
}
Else {
Q=p;
If (llave< p.info)
P=p.izq;
Else p = p.der;
}
}
If(llave < q.info)
q.izq = nuevo;

else q.der = nuevo;


if (llave <pivote.info) {
s= pivote.izq;
altura = 1;
}
Else {
S=pivote.der;
Altura= -1;
}
P = s;
While (p != nuevo) {
If (llave< p.info) {
p.bal =1;
p = p.izq;
}
Else {
p.bal = -1;
p = p.der;
}
}
If (pivote.bal == 0)
Pivote.bal = altura;
Else if (pivote.bal + altura == 0)
Pivote.bal = 0;
Else {
Is (altura == 1)
rDerecha (pivote,s);
else s = drDerecha (pivote,s);
}
Else {
If (s.bal == -1)
rIzquierda (pivote,s);
else s = drIzquierda (pivote,s);
}
If (pp == null)
Raz = s;
Else if (pp.izq == pivote)
pp.izq = s ;
else pp.der = s;
}
Return 1;
}

S-ar putea să vă placă și