import heapq
class TreeNode():
def __init__(self, weight=0, weightedLength=0):
self.weight = weight
self.weightedLength = weightedLength
self.leftChild, self.rightChild = None, None
def addChildren(self, leftChild, rightChild):
self.leftChild, self.rightChild = leftChild, rightChild
self.weight = leftChild.weight + rightChild.weight
self.weightedLength = leftChild.weightedLength + \
rightChild.weightedLength + self.weight
def __lt__(self, obj):
return self.weight < obj.weight
def main():
n = int(input().strip())
weights = list(map(eval,input().strip().split()))
treesList = list()
for w in weights:
heapq.heappush(treesList,TreeNode(weight=w))
while len(treesList)>1:
left = heapq.heappop(treesList)
right = heapq.heappop(treesList)
tree = TreeNode()
tree.addChildren(left,right)
heapq.heappush(treesList, tree)
print(tree.weightedLength)
if __name__=='__main__':
try:
main()
except:
pass
KY188 哈夫曼树
最新推荐文章于 2024-07-25 11:27:31 发布