protected Nodo buscarUsuario(Nodo raizSub, Comparador buscado) { if (raizSub == null) { return(null); } else if (buscado.UsuarioIgual(raizSub.valorNodo())) { return(raizSub); } else if (buscado.UsuarioMenor(raizSub.valorNodo())) { return(buscarUsuario(raizSub.subarbolIzq(), buscado)); } else if (buscado.UsuarioMayor(raizSub.valorNodo())) { return(buscarUsuario(raizSub.subarbolDch(), buscado)); } return(null); }
private NodoAvl insertarAvl(NodoAvl raiz, Comparador dt, Logical h) { NodoAvl n1; if (raiz == null) { raiz = new NodoAvl(dt); h.enviarLogica(true); } else if (dt.UsuarioMenor(raiz.valorNodo())) { NodoAvl iz; iz = insertarAvl((NodoAvl)raiz.subarbolIzq(), dt, h); raiz.ramaIzq(iz); //De verificar la rama izquierda en donde se insertara el nodo if (h.valorLogico())//obtiene un dato para verificar si hay datos { switch (raiz.fe) { case 1: raiz.fe = 0; factorEquilibrio = 0; archivoPlano.vitacoraArbol(factorEquilibrio, "Raiz", raiz); h.enviarLogica(false); break; case 0: raiz.fe = -1; factorEquilibrio = -1; archivoPlano.vitacoraArbol(factorEquilibrio, "Se inserta en la izquierda", raiz); break; case -1: // aplicar rotación a la izquierda n1 = (NodoAvl)raiz.subarbolIzq(); if (n1.fe == -1) { factorEquilibrio = -2; raiz = rotacionII(raiz, n1); archivoPlano.vitacoraArbol(factorEquilibrio, "Rotacion Izquierda Izquierda", raiz); } else { raiz = rotacionID(raiz, n1); archivoPlano.vitacoraArbol(factorEquilibrio, "Rotacion Izquierda Derecha", raiz); h.enviarLogica(false); } break; } } } else if (dt.UsuarioMayor(raiz.valorNodo())) { NodoAvl dr; dr = insertarAvl((NodoAvl)raiz.subarbolDch(), dt, h); raiz.ramaDch(dr); if (h.valorLogico()) { switch (raiz.fe) { case 1: // aplicar rotación a la derecha n1 = (NodoAvl)raiz.subarbolDch(); if (n1.fe == +1) { factorEquilibrio = 2; raiz = rotacionDD(raiz, n1); archivoPlano.vitacoraArbol(factorEquilibrio, " Rotacion derecha derecha", raiz); } else { raiz = rotacionDI(raiz, n1); archivoPlano.vitacoraArbol(factorEquilibrio, " Rotacion derecha izquierda", raiz); h.enviarLogica(false); } break; case 0: raiz.fe = +1; factorEquilibrio = 1; archivoPlano.vitacoraArbol(factorEquilibrio, "Hacia la Derecha", raiz); break; case -1: raiz.fe = 0; factorEquilibrio = 0; archivoPlano.vitacoraArbol(factorEquilibrio, "Equilibrado", raiz); h.enviarLogica(false); break; } } } return(raiz); }