/** * Genera parte del contenido del archivo fuente para GraphViz * @return */ public String getGraphNodo() { tempFlechas = ""; String temp = "nodo" + primero.getIdTransaccion() + " [ label =\""; NodoRamaArbol tempRecorre = primero; int i = 0; String detalles = ""; for (i = 0; i < cuenta; i++, tempRecorre = tempRecorre.getSiguiente()) { temp += "<C" + i + ">|<D" + i + ">ID TRANSACCION: " + tempRecorre.getIdTransaccion() + "\\nID ACTIVO: " + tempRecorre.getIdActivo() + "\\nUSUARIO: " + tempRecorre.getUsuario() + "\\nEMPRESA: " + tempRecorre.getEmpresa() + "\\nDEPARTAMENTO: " + tempRecorre.getDepartamento() + "\\nDURACION: " + tempRecorre.getDuracionRenta() + "|"; if (tempRecorre.getIzquierda() != null) { tempFlechas += "nodo" + primero.getIdTransaccion() + ":C" + i + "->nodo" + tempRecorre.getIzquierda().primero.getIdTransaccion() + "\n"; } } temp += "<C" + i + ">\" fillcolor=\"#CCCCCC\"];\n"; tempRecorre = primero; while (tempRecorre.getSiguiente() != null) { tempRecorre = tempRecorre.getSiguiente(); } if (tempRecorre.getDerecha() != null) { tempFlechas += "nodo" + primero.getIdTransaccion() + ":C" + i + "->nodo" + tempRecorre.getDerecha().primero.getIdTransaccion() + "\n"; } temp += tempFlechas; temp += detalles; return(temp); }
private Object inserta(NodoRamaArbol nodo, RamaArbol rama) { if (rama.esHoja()) { rama.insertar(nodo); if (rama.getCuenta() == 5) { return(dividir(rama)); } else { return(rama); } } else { NodoRamaArbol temp = rama.getPrimero(); do { if (nodo.getIdTransaccion().CompareTo(temp.getIdTransaccion()) == 0) { return(rama); } else if (nodo.getIdTransaccion().CompareTo(temp.getIdTransaccion()) < 0) { Object obj = inserta(nodo, temp.getIzquierda()); if (obj is NodoRamaArbol) { rama.insertar((NodoRamaArbol)obj); if (rama.getCuenta() == 5) { return(dividir(rama)); } } return(rama); } else if (temp.getSiguiente() == null) { Object obj = inserta(nodo, temp.getDerecha()); if (obj is NodoRamaArbol) { rama.insertar((NodoRamaArbol)obj); if (rama.getCuenta() == 5) { return(dividir(rama)); } } return(rama); } temp = temp.getSiguiente(); } while (temp != null); } return(rama); }
/** * * @param nodo */ public void insertar(NodoRamaArbol nodo) { if (estaEnBlanco()) { primero = nodo; primero.setAnterior(null); primero.setSiguiente(null); cuenta++; } else { NodoRamaArbol temp = primero; do { if (nodo.getIdTransaccion().CompareTo(temp.getIdTransaccion()) == 0) { break; } else if (nodo.getIdTransaccion().CompareTo(temp.getIdTransaccion()) < 0) { cuenta++; if (temp == primero) { primero.setAnterior(nodo); primero.setIzquierda(nodo.getDerecha()); nodo.setSiguiente(primero); primero = nodo; break; } else { nodo.setAnterior(temp.getAnterior()); nodo.setSiguiente(temp); temp.getAnterior().setSiguiente(nodo); temp.getAnterior().setDerecha(nodo.getIzquierda()); temp.setAnterior(nodo); temp.setIzquierda(nodo.getDerecha()); break; } } else if (temp.getSiguiente() == null) { cuenta++; temp.setSiguiente(nodo); temp.setDerecha(nodo.getIzquierda()); nodo.setAnterior(temp); nodo.setSiguiente(null); break; } temp = temp.getSiguiente(); } while (temp != null); } }
private void busca(int idTransaccion, RamaArbol rama, RamaArbol salida) { if (rama == null) { return; } NodoRamaArbol nodo = rama.getPrimero(); while (nodo != null) { if (!rama.esHoja()) { busca(idTransaccion, nodo.getIzquierda(), salida); busca(idTransaccion, nodo.getDerecha(), salida); } if (idTransaccion.CompareTo(nodo.getIdTransaccion()) == 0) { salida.insertar(new NodoRamaArbol(nodo.getIdTransaccion(), nodo.getIdActivo(), nodo.getUsuario(), nodo.getEmpresa(), nodo.getDepartamento(), nodo.getFecha(), nodo.getDuracionRenta())); } nodo = nodo.getSiguiente(); } }
private NodoRamaArbol busca(int idTransaccion, RamaArbol rama) { NodoRamaArbol nodo = rama.getPrimero(); while (nodo != null) { if (idTransaccion.CompareTo(nodo.getIdTransaccion()) < 0) { if (rama.esHoja()) { return(null); } else { return(busca(idTransaccion, nodo.getIzquierda())); } } else if (idTransaccion.CompareTo(nodo.getIdTransaccion()) == 0) { return(nodo); } else if (nodo.getSiguiente() == null) { if (rama.esHoja()) { return(null); } else { return(busca(idTransaccion, nodo.getDerecha())); } } nodo = nodo.getSiguiente(); } return(null); }
private NodoRamaArbol dividir(RamaArbol rama) { RamaArbol derecha = new RamaArbol(), izquierda = new RamaArbol(); NodoRamaArbol medio = null, temp = rama.getPrimero(); for (int i = 1; i < 6; i++, temp = temp.getSiguiente()) { NodoRamaArbol nodo = new NodoRamaArbol(temp.getIdTransaccion(), temp.getIdActivo(), temp.getUsuario(), temp.getEmpresa(), temp.getDepartamento(), temp.getFecha(), temp.getDuracionRenta()); nodo.setIzquierda(temp.getIzquierda()); nodo.setDerecha(temp.getDerecha()); if (nodo.getDerecha() != null && nodo.getIzquierda() != null) { izquierda.setHoja(false); derecha.setHoja(false); } switch (i) { case 1: case 2: izquierda.insertar(nodo); break; case 3: medio = nodo; break; case 4: case 5: derecha.insertar(nodo); break; } } medio.setIzquierda(izquierda); medio.setDerecha(derecha); return(medio); }