public int CompareTo(object obj) { TreeElement compareToObj = (TreeElement)obj; return(this.probabilidad.CompareTo(compareToObj.probabilidad)); }
public NodoArbol TreeCreation(List <TreeElement> lista) { Arbol Auxiliar = new Arbol(); NodoArbol Aux = new NodoArbol(); NodoArbol izquierdo = new NodoArbol(); NodoArbol derecho = new NodoArbol(); int Repeticiones = lista.Count(); for (int i = 0; i < Repeticiones; i++) { if (lista.Count < 2) { break; } else { Auxiliar = new Arbol(); Aux = new NodoArbol(); izquierdo = new NodoArbol(); derecho = new NodoArbol(); string nombre = "n" + (i + 1); if (lista[0].Aux == null && lista[1].Aux == null) { //hijo izquierdo izquierdo.caracter = Convert.ToString(lista[0].caracter); izquierdo.probabilidad = lista[0].probabilidad; //hijo derecho derecho.caracter = Convert.ToString(lista[1].caracter); derecho.probabilidad = lista[1].probabilidad; } else { if (lista[0].Aux != null && lista[1].Aux == null) { //hijo izquierdo izquierdo = lista[0].Aux; //hijo derecho derecho.caracter = Convert.ToString(lista[1].caracter); derecho.probabilidad = lista[1].probabilidad; } else { if (lista[0].Aux == null && lista[1].Aux != null) { //hijo izquierdo izquierdo.caracter = Convert.ToString(lista[0].caracter); izquierdo.probabilidad = lista[0].probabilidad; //hijo derecho derecho = lista[1].Aux; } else { //hijo izquierdo izquierdo = lista[0].Aux; //hijo derecho derecho = lista[1].Aux; } } } lista.Remove(lista[0]); lista[0] = null; Aux = Auxiliar.ingresar(izquierdo, derecho, nombre); TreeElement elemento = new TreeElement(); elemento.Aux = Aux; elemento.probabilidad = Aux.probabilidad; if (lista.Count() > 1) { for (int j = 1; j < lista.Count(); j++) { if (lista[j].probabilidad > elemento.probabilidad) { lista[j - 1] = elemento; break; } else { lista[j - 1] = lista[j]; lista[j] = null; if (lista[lista.Count() - 1] == null) { lista[lista.Count() - 1] = elemento; } } } } else { lista[0] = elemento; } } } return(lista[0].Aux); }