Exemple #1
0
def gen_huffman_tree(arr):
    """生成霍夫曼树"""
    li = list()
    for v in arr:
        node = Node(v)
        li.append(node)
    while len(li) > 1:
        # 根据节点的权重值对节点进行排序
        li.sort(key=lambda n: n.data)
        # 取出前两个树构造新树
        n1 = li.pop(0)
        n2 = li.pop(0)
        new_node = Node(n1.data + n2.data)
        new_node.lchild = n1
        new_node.rchild = n2
        li.append(new_node)
    return BinaryTree(li.pop(0))