Comment puis-je créer un arbre de Huffman codage et de décodage?

Pour ma mission, je dois faire un encodage et de décodage pour arbres de huffman. J'ai un problème de la création de mon arbre, et je suis coincé.

N'avez pas l'esprit de l'impression des états - ils sont juste pour me tester et voir ce que la sortie est alors que ma fonction s'exécute.

Pour la première boucle for, j'ai eu toutes les valeurs et index dans le fichier texte que j'ai utilisé dans mon bloc principal pour les tests.

Dans la deuxième boucle for, j'ai inséré tous les trucs dans la file d'attente de priorité.

Je suis donc coincé sur où aller - je suis en train de faire des nœuds, mais je suis confus sur la façon de progresser. Quelqu'un peut-il me dire si je suis en train de faire de ce droit?

def _create_code(self, frequencies):
    '''(HuffmanCoder, sequence(int)) -> NoneType
    iterate over index into the sequence keeping it 256 elements long, '''
    #fix docstring
    p = PriorityQueue()
    print frequencies

    index = 0 
    for value in frequencies:
        if value != 0:
            print value #priority
            print index #elm
            print '-----------'       
        index = index + 1


    for i in range(len(frequencies)):
        if frequencies[i] != 0:
            p.insert(i, frequencies[i])  
            print i,frequencies[i]
            if p.is_empty():
                a = p.get_min()
                b = p.get_min()
                n1 = self.HuffmanNode(None, None, a)
                n2 = self.HuffmanNode(None, None, b)
                print a, b, n1, n2
    while not p.is_empty():
        p.get_min()

J'ai inséré manuellement les deux premiers pour commencer mon arbre, est-ce correct?

Comment dois-je continuer? Je sais que l'idée de celui-ci, juste au niveau du code, je suis très coincé.

C'est à l'aide de python, par la manière. J'ai essayé de regarder sur Wikipedia, je connais les étapes, j'ai juste besoin d'aide sur le code et comment je dois continuer, merci!

La HuffmanNode vient de cette classe imbriquée:

class HuffmanNode(object):

    def __init__(self, left=None, right=None, root=None):
        self.left = left
        self.right = right
        self.root = root
Je le ferais de manière récursive.
comment alors ?la récursivité est donc source de confusion pour moi, peut-u sorta de me guider dans le ventre?
En fait, je pense qu'une solution itérative est assez simple. Voici deux de ces algorithmes donnés sur la wikipedia article le Codage Huffman.

OriginalL'auteur xevaaa | 2012-07-20