public void inicializarArbolBB() { raiz = null; altura = 0; hojas = 0; ramas = 0; nivel = 0; }
private int cantidadRamas(NodoArbolBB actualRaiz) { if (actualRaiz != null) { int ramasIzq = cantidadRamas(actualRaiz.hijoIzq); int ramasDer = cantidadRamas(actualRaiz.hijoDer); contadorRamas = ramasDer + ramasIzq + 1; return(contadorRamas); } return(0); }
//Eliminar nodo del Arbol Binario public void eliminarABB(ref NodoArbolBB actualRaiz, string nickName) { if (actualRaiz != null) { if (nickName.CompareTo(actualRaiz.nickName) < 0) { eliminarABB(ref actualRaiz.hijoIzq, nickName); } else if (nickName.CompareTo(actualRaiz.nickName) > 0) { eliminarABB(ref actualRaiz.hijoDer, nickName); } else { NodoArbolBB nodoEliminar = actualRaiz; if (nodoEliminar.hijoDer == null) { actualRaiz = nodoEliminar.hijoIzq; } else if (nodoEliminar.hijoIzq == null) { actualRaiz = nodoEliminar.hijoDer; } else { NodoArbolBB nodoAux = null; NodoArbolBB Aux = actualRaiz.hijoIzq; bool bandera = false; while (Aux.hijoDer != null) { nodoAux = Aux; Aux = nodoAux.hijoDer; bandera = true; } //Reacomodando el arbol para que no se pierdan los apuntadores y las referencias. actualRaiz.nickName = Aux.nickName; actualRaiz.password = Aux.password; actualRaiz.email = Aux.email; actualRaiz.conectado = Aux.conectado; actualRaiz.LDJuego = Aux.LDJuego; nodoEliminar = Aux; if (bandera == true) { nodoAux.hijoDer = Aux.hijoIzq; } else { actualRaiz.hijoIzq = Aux.hijoIzq; } } } } }
private int nivelMaximo(NodoArbolBB actualRaiz) { if (actualRaiz != null) { if ((actualRaiz.hijoIzq != null) || (actualRaiz.hijoDer != null))//si la raiz tiene hijos llamada metodo recursivo { int contIzq = nivelMaximo(actualRaiz.hijoIzq); int contDer = nivelMaximo(actualRaiz.hijoDer); return(1 + Math.Max(contIzq, contDer)); } } return(0); }
private static int cantidadHojas(NodoArbolBB actualRaiz) { if (actualRaiz != null) { if ((actualRaiz.hijoIzq == null) && (actualRaiz.hijoDer == null)) { return(1); } else { return(cantidadHojas(actualRaiz.hijoIzq) + cantidadHojas(actualRaiz.hijoDer)); } } return(0); }
private static void insertarABB(NodoArbolBB actualRaiz, string nickName, string password, string email, bool conectado)//, ListaDobleJuego LDJuego) { //Validar si el nuevo nada es mayor o menor para colocarlo en el arbol //Lado Izquierdo if (nickName.CompareTo(actualRaiz.nickName) < 0)//(String.Compare(nickName,actualRaiz.nickName)==-1) { if (actualRaiz.hijoIzq == null) { NodoArbolBB nuevoNodo = new NodoArbolBB(); nuevoNodo.nickName = nickName; nuevoNodo.password = password; nuevoNodo.email = email; nuevoNodo.conectado = conectado; //nuevoNodo.LDJuego = LDJuego; actualRaiz.hijoIzq = nuevoNodo; } else { insertarABB(actualRaiz.hijoIzq, nickName, password, email, conectado);//, LDJuego); } } else if (nickName.CompareTo(actualRaiz.nickName) > 0)//(String.Compare(nickName,actualRaiz.nickName)==1) { //Lado derecho if (actualRaiz.hijoDer == null) { NodoArbolBB nuevoNodo = new NodoArbolBB(); nuevoNodo.nickName = nickName; nuevoNodo.password = password; nuevoNodo.email = email; nuevoNodo.conectado = conectado; //nuevoNodo.LDJuego = LDJuego; actualRaiz.hijoDer = nuevoNodo; } else { insertarABB(actualRaiz.hijoDer, nickName, password, email, conectado);//, LDJuego); } } else { Console.WriteLine("Nodo Existente"); Console.ReadLine(); } }
private string InOrden(NodoArbolBB actualRaiz) { if (actualRaiz != null) { graph += "\nnodo" + actualRaiz.nickName.ToString() + "[label=\" <f0> |<f1> " + actualRaiz.nickName.ToString() + " \nEmail: " + actualRaiz.email + " \nConectado: " + actualRaiz.conectado.ToString() + " |<f2>\"]; \n"; if (actualRaiz.hijoIzq != null) { InOrden(actualRaiz.hijoIzq); graph += "\n\"nodo" + actualRaiz.nickName.ToString() + "\":f0 -> \"nodo" + actualRaiz.hijoIzq.nickName.ToString() + "\":f1;"; } if (actualRaiz.hijoDer != null) { InOrden(actualRaiz.hijoDer); graph += "\n\"nodo" + actualRaiz.nickName.ToString() + "\":f2 -> \"nodo" + actualRaiz.hijoDer.nickName.ToString() + "\":f1;"; } } return(graph); }
private static string passwordMetodo(NodoArbolBB actualRaiz, string usuario, string password) { if (actualRaiz != null) { if (usuario.CompareTo(actualRaiz.nickName) < 0) //(String.Compare(usuario, actualRaiz.nickName) == -1) { /* * Buscar en el subarbol Izquierdo */ if (actualRaiz.hijoIzq == null) { Console.WriteLine("ERROR, No se encuentra el Nodo..."); Console.ReadLine(); } else { usuarioMetodo(actualRaiz.hijoIzq, usuario); } } else if (usuario.CompareTo(actualRaiz.nickName) > 0) { /* * Buscar en el subarbol Derecho */ if (actualRaiz.hijoDer == null) { Console.WriteLine("ERROR, No se encuentra el Nodo..."); Console.ReadLine(); } else { usuarioMetodo(actualRaiz.hijoDer, usuario); } } else { return(password); } } return("no hay valores"); }
private int alturaArbolBB(NodoArbolBB actualRaiz) { if (actualRaiz != null) { if ((actualRaiz.hijoDer != null) || (actualRaiz.hijoIzq != null)) { int camIzq = alturaArbolBB(actualRaiz.hijoIzq); int camDer = alturaArbolBB(actualRaiz.hijoDer); if (camDer > camIzq) { return(camDer + 1); } else { return(camIzq + 1); } } return(1); //retorna 1 cuando termina de buscar el mas a la izquierda y empieza a retorna el valor } return(0); //retorna 0 si encuentra que la raiz del arbol en nula }
public void insertarABB(string nickName, string password, string email, bool conectado)//, ListaDobleJuego LDJuego) { //Creando el nuevo nodo NodoArbolBB nuevoNodo = null; nuevoNodo = new NodoArbolBB(); nuevoNodo.nickName = nickName; nuevoNodo.password = password; nuevoNodo.email = email; nuevoNodo.conectado = conectado; //nuevoNodo.LDJuego = LDJuego; nuevoNodo.hijoDer = null; nuevoNodo.hijoIzq = null; if (raiz == null) { raiz = nuevoNodo; } else { insertarABB(raiz, nickName, password, email, conectado);//, LDJuego); } }
//Arbol Espejo private NodoArbolBB arbolEspejo(NodoArbolBB actualRaiz) { NodoArbolBB temporal; if (actualRaiz != null) { temporal = actualRaiz.hijoIzq; graph1 += "\nnodo" + actualRaiz.nickName + "[label=\" <f0> |<f1> " + actualRaiz.nickName + " \nEmail: " + actualRaiz.email + " \nConectado: " + actualRaiz.conectado.ToString() + " |<f2>\"]; \n"; if ((actualRaiz.hijoIzq != null && actualRaiz.hijoDer != null)) { actualRaiz.hijoIzq = arbolEspejo(actualRaiz.hijoDer); graph1 += "\n\"nodo" + actualRaiz.nickName.ToString() + "\":f0 -> \"nodo" + actualRaiz.hijoIzq.nickName.ToString() + "\":f1;"; actualRaiz.hijoDer = arbolEspejo(temporal); graph1 += "\n\"nodo" + actualRaiz.nickName.ToString() + "\":f2 -> \"nodo" + actualRaiz.hijoDer.nickName.ToString() + "\":f1;"; } else { // //graph1 += "\n\"nodo" + actualRaiz.nickName + "\":f0 -> \"nodo" + actualRaiz.hijoDer.nickName + "\":f1;"; actualRaiz.hijoIzq = arbolEspejo(actualRaiz.hijoDer); actualRaiz.hijoDer = arbolEspejo(temporal); } } return(actualRaiz); }
public string usuarioLogin(NodoArbolBB actualRaiz, string usuario, string password) { return(""); }