public void rotarIzquerda(int valor) { if (arbol == null) { // No hay nodos. return; } ArbolNodo hijo = arbol; ArbolNodo padre; ArbolNodo abuelo; while (true) { abuelo = padre; padre = hijo; if (valor == hijo.getValor()) { // Se encontrĂ³ hijo = padre.getDerecha(); if (hijo == null) { return; } // Rotar los valores. ArbolNodo hijoIzquerda = hijo.getIzquerda(); if (arbol == padre) { arbol = hijo; } else { if (abuelo.getDerecha() == padre) { abuelo.setDerecha(hijo); } else { abuelo.setIzquerda(hijo); } } hijo.setIzquerda(padre); if (hijoIzquerda != null) { padre.setDerecha(hijoIzquerda); } else { padre.setDerecha(null); } return; } else if (valor < hijo.getValor()) { // Izquerda hijo = hijo.getIzquerda(); if (hijo == null) { // No existe el nodo. return; } } else { // Derecha hijo = hijo.getDerecha(); if (hijo == null) { // No existe el nodo. return; } } } } final public class ArbolNodo { private ArbolNodo izquerda; private ArbolNodo derecha; private int valor; public ArbolNodo(int valor) { this.izquerda = null; this.derecha = null; this.valor = valor; } public ArbolNodo getIzquerda() { return izquerda; } public void setIzquerda(ArbolNodo izquerda) { this.izquerda = izquerda; } public ArbolNodo getDerecha() { return derecha; } public void setDerecha(ArbolNodo derecha) { this.derecha = derecha; } public int getValor() { return valor; } }