Ejemplo n.º 1
0
    def encoding(self, value):

        for i in range(len(value)):
            self.frequency_occurrence[ord(value[i])] = self.frequency_occurrence[ord(value[i])] + 1

        for i in range((len(self.frequency_occurrence))):
            if self.frequency_occurrence[i] != 0:
                self.frequency_dict[chr(i)] = self.frequency_occurrence[i]

        for values in self.frequency_dict:
            self.node_info_list.append(NodeInfo(values, self.frequency_dict[values]))

        self.node_info_list.sort(key=lambda x: x.value)

        while len(self.node_info_list) > 1:
            temp_node_one = self.node_info_list[0]

            temp_node_two = self.node_info_list[1]

            new_temp_node_value = temp_node_one.value + temp_node_two.value

            new_temp_node_key = temp_node_one.key + temp_node_two.key

            new_temp_node = NodeInfo(new_temp_node_key, new_temp_node_value)

            new_temp_node.set_left_child(temp_node_one)
            new_temp_node.set_right_child(temp_node_two)

            self.node_info_list.append(new_temp_node)

            del (self.node_info_list[0])
            del (self.node_info_list[0])

        self.huffman_root_node = self.node_info_list[0]
        self.traverse_huffman_tree()