import heapq
class TreeNode():
def __init__(self, weight=0, weightedLength=0):
self.weight = weight
self.weightedLength = weightedLength
self.rightChild, self.leftChild = None, None
def __lt__(self, obj):
return self.weight < obj.weight
def insert(self, leftChild, rightChild):
self.leftChild, self.rightChild = leftChild, rightChild
self.weight = leftChild.weight + rightChild.weight
self.weightedLength = leftChild.weightedLength + \
rightChild.weightedLength + self.weight
def __repr__(self):
return 'TreeNode(weight={},weightedLength={})'.format(self.weight,self.weightedLength)
def main():
n = int(input())
if n == 0:
return
nums = list(map(int,input().strip().split()))
treesList = list()
for num in nums:
heapq.heappush(treesList, TreeNode(weight=num))
heapq.heapify(treesList)
while len(treesList) > 1:
leftChild = heapq.heappop(treesList)
rightChild = heapq.heappop(treesList)
tree = TreeNode()
tree.insert(leftChild=leftChild,rightChild=rightChild)
heapq.heappush(treesList, tree)
print(tree.weightedLength)
main()
KY179 搬水果
最新推荐文章于 2024-06-18 18:11:36 发布