【問題描述】
已知輸入一串正整數,正整數之間用空格鍵分開,請建立乙個哈夫曼樹,以輸入的數字為葉節點,求這棵哈夫曼樹的帶權路徑長度。
【輸入形式】
首先輸入正整數的個數,然後接下來為接下來的正整數,正整數個數不超過10個
【輸出形式】
輸出相應的權值
【樣例輸入】
5 4 5 6 7 8
【樣例輸出】
n =
list
(map
(int
,input()
.strip(
).split())
)geshu=n[0]
qita=n[1:
]#print(len(qita))
'''a=min(qita)
print(a)
'''u=
0def
count
(qita)
: i=
0 s=
0global u
while
len(qita)!=1
: a=
min(qita)
qita.remove(a)
b=min(qita)
qita.remove(b)
c=a+b
i=i+
1 s+=i*c
count(qita)
u+=s
count(qita)
print
(u)
哈夫曼樹 哈夫曼樹求帶權路徑和
首先要了解哈夫曼樹的一些概念 帶權路徑 每個葉子結點都有權值,對於某葉子結點來說,它的帶權路徑就是 結點權值 從根節點到該結點的路徑長度 哈夫曼樹的構造方法 兩個權值最小的葉子結點作為兄弟去構成乙個非葉節點。該父親非葉節點的權值 二者之和 之前我只知道這些基本概念,求帶權路徑和的時候也只是 數數 數...
資料結構 求節點的哈夫曼的帶權路徑長度
問題描述 已知輸入一串正整數,正整數之間用空格鍵分開,請建立乙個哈夫曼樹,以輸入的數字為葉節點,求這棵哈夫曼樹的帶權路徑長度。輸入形式 首先輸入正整數的個數,然後接下來為接下來的正整數,正整數個數不超過10個 輸出形式 輸出相應的權值 樣例輸入 5 4 5 6 7 8 樣例輸出 69求哈夫曼樹的演算...
哈夫曼樹與哈夫曼編碼的實現 python
建立節點類,用於每個節點的生成 class hfmnode def init self self.name none self.weight none self.leftchild none self.rightchild none self.parent none 構建哈夫曼樹 def creat...