boa noite,
pessoal, há algum problema lógico nesse trecho
private void posOrd(NodoED n) {
if (n == null) return;
posOrd(n.esq);
posOrd(n.dir);
}
private void huffman()
{
log.append("Gerando a arvore de Huffman...\n\n");
log.append("Estados da lista de nodos:\n");
while ( ls.getNel() > 1 )
{
log.append(ls.listaOutput()+"\n");
NodoED a = ls.removePrimeiro(); //remove o primeiro da lista.
NodoED b = ls.removePrimeiro(); //remove o primeiro da lista novamente.
NodoED nn = new NodoED();
nn.esq = a; //o menor entre A e B
nn.dir = b; //o maior entre A e B
nn.val = a.val + b.val; //ocorrencias
ls.insere(nn);
log.append(ls.listaOutput()+"\n\n");
}
NodoED r = ls.getLista();
posOrd(r);
}
pois do jeito que está, a ávore gerada não está sendo binária, gerando erro.
obrigado!