public void Insertar(NodoArbol aux) { string usuario = aux.GetNickname(); string password = aux.GetPassword(); string correo = aux.GetCorreo(); NodoAVL nuevo = new NodoAVL(usuario, password, correo); NodoAVL padrenuevo = null; NodoAVL actual = this.GetRaiz(); if (GetRaiz() == null) { this.raiz = nuevo; } else { if (!ExisteContacto(usuario)) { while (actual != null) { padrenuevo = actual; if (actual.GetUsuario().CompareTo(usuario) > 0) { actual = actual.GetHijoIzquierdo(); } else { actual = actual.GetHijoDerecho(); } } if (padrenuevo.GetUsuario().CompareTo(usuario) > 0) { padrenuevo.SetHijoIzquierdo(nuevo); nuevo.SetPadre(padrenuevo); EquilibrarArbol(padrenuevo, "izquierda", true); } else { padrenuevo.SetHijoDerecho(nuevo); nuevo.SetPadre(padrenuevo); EquilibrarArbol(padrenuevo, "derecha", true); } } } }
private void RotacionSimple(NodoAVL nodo, NodoAVL padre, string tipo) { if (tipo == "derecha") { NodoAVL hijoizq = nodo.GetHijoIzquierdo(); NodoAVL hijoizqder = hijoizq.GetHijoDerecho(); if (padre != null) { if (padre.GetHijoDerecho() == nodo) { padre.SetHijoDerecho(hijoizq); } else { padre.SetHijoIzquierdo(hijoizq); } } else { this.raiz = hijoizq; } nodo.SetHijoIzquierdo(hijoizqder); hijoizq.SetHijoDerecho(nodo); nodo.SetPadre(hijoizq); if (hijoizqder != null) { hijoizqder.SetPadre(nodo); } hijoizq.SetPadre(padre); nodo.SetFe(0); hijoizq.SetFe(0); } else { NodoAVL hijoder = nodo.GetHijoDerecho(); NodoAVL hijoderizq = hijoder.GetHijoIzquierdo(); if (padre != null) { if (padre.GetHijoDerecho() == nodo) { padre.SetHijoDerecho(hijoder); } else { padre.SetHijoIzquierdo(hijoder); } } else { this.raiz = hijoder; } nodo.SetHijoDerecho(hijoderizq); hijoder.SetHijoIzquierdo(nodo); nodo.SetPadre(hijoder); if (hijoderizq != null) { hijoderizq.SetPadre(nodo); } hijoder.SetPadre(padre); hijoder.SetFe(0); nodo.SetFe(0); } }