Construção recursiva da árvore fractal de Huffman

Python Hard recursion

Tarefa «Construção recursiva da árvore fractal de Huffman»

Dada uma string de caracteres do alfabeto latino (letras minúsculas). É necessário construir a árvore fractal de Huffman: para cada caractere, calcular sua frequência, então construir recursivamente uma árvore onde cada nó contém a soma das frequências das subárvores esquerda e direita, e as folhas contêm os caracteres. Em cada passo da recursão, deve-se dividir a lista de caracteres em duas partes de modo que a soma das frequências na parte esquerda seja o mais próxima possível da soma das frequências na parte direita (algoritmo guloso). Retornar uma string representando a árvore em notação prefixada: para um nó — 'F{soma}', para uma folha — 'L{caractere}'. A recursão é obrigatória.

Formato de Entrada

Uma única string composta por letras minúsculas do alfabeto latino (comprimento de 1 a 100).

Formato de Saída

Uma string — notação prefixada da árvore sem espaços.

Exemplos

Exemplo 1

ENTRADA
1 42
SAÍDA
L1

Exemplo 2

ENTRADA
nil nil nil
SAÍDA
F11F6LnLiF5LlL

Exemplo 3

ENTRADA
abc
SAÍDA
F3LaF2LbLc

Exemplo 4

ENTRADA
0 1 2
SAÍDA
F5F3L0L F2L1L2
main.py