def __huffman_helper(real: HuffmanTree) -> None: """Helper function for build_huffman trees where it basically goes through the tree turning the internal nodes symbols to None""" if not real.is_leaf and real is not None: real.symbol = None __huffman_helper(real.left) __huffman_helper(real.right)
def __preorder_pls(tree: HuffmanTree, freq_dict: Dict[int, int], ff: Dict[int, int]) -> None: if tree.is_leaf and tree.symbol is not None: tree.symbol = freq_dict[max(freq_dict.keys())] freq_dict.pop(max(freq_dict.keys())) else: __preorder_pls(tree.left, freq_dict, ff) __preorder_pls(tree.right, freq_dict, ff)
def _swap(tree: HuffmanTree, dic: Dict) -> None: """ Swaps the values. """ if tree.symbol: if tree.symbol in dic: tree.symbol = dic[tree.symbol] else: _swap(tree.left, dic) _swap(tree.right, dic)