publicclassnodoA { int id; nodoAizq; nodoA der; publicnodoA(int X) { id = X; izq = null; der = null; } } public classArbolB { nodoAraiz; publicArbolB() { raiz = null; } publicvoid insertar(nodoA nuevo) { if (raiz == null) raiz = nuevo; elseinsertar(raiz, nuevo); } privatevoidinsertar(nodoA r, nodoA n) { if(n.id < r.id) if(r.izq == null) r.izq = n; elseinsertar(r.izq, n); else if(n.id > r.id) if(r.der == null) r.der = n; elseinsertar(r.der, n); elseSystem.out.println(“El nodoexiste”); return; } publicnodoA buscar(int valor) { if(vacio()) return null; elsereturnbuscar(valor, raiz); } privatenodoAbuscar(int v, nodoA a) { if(a != null) if(v < a.id) return buscar(v, a.izq); else if(v > a.id) return buscar(v, a.der); else return a; elsereturnnull; } publicbooleaneliminar(int valor) { if(vacio())returnfalse; else { nodoA X = eliminar(valor, raiz); if(X == null) return false; elsereturn true; } } privatenodoAeliminar(int v, nodoA a) { if(buscar != null) { if(v < a.id) a.izq = eliminar(v, a.izq); else if(v > a.id) a.der = eliminar(v, a.der); else returnreemplazar(a); return a; } else return null; } privatenodoA reemplazar(nodoA r) { if(r.izq == null) return r.der; else if(r.der == null) returnr.izq; else { nodoA A = r; nodoA B = r.izq; while(B.der != null) { A = B; B = B.der; } r.id = B.id; if(A == r) A.izq = B.izq; elseA.der = B.izq; return r; } } publicbooleanvacio() { returnraiz == null; } }