info
Importante: Para que se registre el resultado tienes que iniciar sesión.
Codificación Huffman
Master100 pts·Algoritmos
Enunciado
Codificación Huffman
La codificación de Huffman es un algoritmo de compresión sin pérdida que asigna códigos binarios más cortos a los caracteres más frecuentes y códigos más largos a los menos frecuentes.
Tarea
Dada una lista de pares [caracter, frecuencia], construye el árbol de Huffman y devuelve un objeto con el código binario de cada carácter.
Reglas de desempate
- La cola de prioridad extrae primero el nodo de menor frecuencia.
- Si dos nodos tienen la misma frecuencia, se extrae primero el que tiene el carácter mínimo lexicográfico (para nodos internos usa el carácter mínimo de sus hojas).
- Al fusionar dos nodos, el primero extraído (menor) queda como hijo izquierdo (código
"0") y el segundo como hijo derecho (código"1"). - Si solo hay un carácter, su código es
"0".
Ejemplo
huffmanCodes([["a", 4], ["b", 2], ["c", 1]])
// Proceso:
// 1. Extraer c(1) y b(2) → nodo interno cb(3, min="b"). Left=c → "0", Right=b → "1"
// 2. Extraer cb(3) y a(4) → raíz(7, min="a"). Left=cb → "0", Right=a → "1"
// Resultado: { a: "1", b: "01", c: "00" }
huffmanCodes([["z", 5]])
// Resultado: { z: "0" }
Restricciones
1 <= pares.length <= 26- Los caracteres son letras minúsculas únicas.
- Las frecuencias son enteros positivos.
- El resultado debe ser determinista (aplicar las reglas de desempate).
Restriccionesexpand_more
- Dificultad: Master
- Completa todos los test cases para obtener los 100 puntos.
- No modificar la línea
exportal final del archivo. - Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.
Puedes usar console.log() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.
Inicia sesión para reaccionar
Inicia sesión para reaccionar