public NodoHuffman(decimal Prioridad, string Simbolo) { simbolo = Simbolo; prioridad = Prioridad; derecho = null; izquierdo = null; rutateorica = 0; }
public bool eshoja(NodoHuffman encuestion) { bool retornado = false; if (encuestion.izquierdo == null && encuestion.derecho == null) { retornado = true; } else { } return(retornado); }
public void generarlistarecursivo(NodoHuffman encuestion) { bool esHoja = eshoja(encuestion); if (esHoja) { nodoshoja.Add(encuestion); } else { generarlistarecursivo(encuestion.izquierdo); generarlistarecursivo(encuestion.derecho); } }
public void generararbol() { while (nodosarbol.Count > 1) { nodosarbol.Sort(); decimal nprioridad = nodosarbol[0].prioridad + nodosarbol[1].prioridad; NodoHuffman aux1 = new NodoHuffman(nprioridad, ""); aux1.izquierdo = nodosarbol[0]; aux1.derecho = nodosarbol[1]; nodosarbol.RemoveAt(0); nodosarbol.RemoveAt(0); nodosarbol.Add(aux1); } raiz = nodosarbol[0]; }
public void seteorecursivo(NodoHuffman encuestion) { bool condicion = eshoja(encuestion); if (condicion) { } else { encuestion.izquierdo.altura = encuestion.altura + 1; encuestion.derecho.altura = encuestion.altura + 1; seteorecursivo(encuestion.derecho); seteorecursivo(encuestion.izquierdo); } }
public void crearrecrsivo(NodoHuffman encuestion) { bool necesito = eshoja(encuestion); if (!necesito) { encuestion.corregirruta(); encuestion.izquierdo.rutateorica = encuestion.rutateorica * 2; encuestion.derecho.rutateorica = (encuestion.rutateorica * 2) + 1; crearrecrsivo(encuestion.izquierdo); crearrecrsivo(encuestion.derecho); } else { encuestion.corregirruta(); } }
public int CompareTo(object obj) { if (obj == null) { return(1); } NodoHuffman otherNodoDato = obj as NodoHuffman; if (otherNodoDato != null) { return(this.prioridad.CompareTo(otherNodoDato.prioridad)); } else { throw new ArgumentException("Object is not a NodoDato"); } }
public ArbolHuffman(string contenido) { this.contenido = contenido; ListaDeSimbolos nsimbolo = new ListaDeSimbolos(contenido); nsimbolo.contadordeocurrencias(); List <string> Simbolos = nsimbolo.simbolos; List <decimal> ocurrencia = nsimbolo.prioridad; simbolos = Simbolos; ocurrenciaporcentual = ocurrencia; for (int i = 0; i < simbolos.Count; i++) { NodoHuffman aux = new NodoHuffman(ocurrenciaporcentual[i], simbolos[i]); nodosarbol.Add(aux); } generararbol(); seteoaltura(); crearruta(); generarlista(); generardiccionarios(); }