def getHuffmanCoding( tree, prefix="", code = {} ):
    """
    Projde rekurzivně předaný strom a ohodnotí jednotlivé znaky dle
    pravidel Huffmanova kódování.
    To znamená, že hrana jdoucí od svého rodiče nalevo, má
    ohodnocení 0 a hrana napravo ohodnocení 1.

    Ohodnocení samotného vrcholu je tvořen posloupností kódů

    Parametry:
    ----------
        tree: dictionary
            Slovník reprezentující strom, který se má projít
        
        prefix: string
            Řetězec obsahující kód cesty k tomuto node
        
        code: dictionary
            Slovník obsahujcí páry písmen/číslic (klíč) a jejich kódu.

    Vrací:
    ------
        dictionary
            Slovník obsahující páry písmen/čísli (klíč) a jejich kódu.
    """

    # Pokud je potomek nalevo jen "rodičovský node"
    if tree["left"]["name"] == "":
        getHuffmanCoding( tree["left"], prefix+"0", code)
    else:
        # Node je znak/číslo, rovnou vytvoří jeho kód
        code[ tree["left"]["name"] ] = prefix+"0"

    # Pokud je potomek napravo jen "rodičovský node"
    if tree["right"]["name"] == "":
        getHuffmanCoding( tree["right"], prefix+"1", code )
    else:
        # Node je znak/čéslo, rovnou vytvoří kód
        code[ tree["right"]["name"] ] = prefix+"1"

    return (code)