1. 程式人生 > >哈夫曼樹的正確開啟方式

哈夫曼樹的正確開啟方式

1.哈夫曼樹畫法交流 假設一組權值節點如下,並畫出哈夫曼樹, (4,5,8,24,13,17,34) 畫哈夫曼樹的規則之一就是: 1.選出權值差值最小的兩個節點互為兄弟節點(即4,5互為兄弟節點) 2.合併後把他們的父節點權值(即:9)帶入到原佇列中和其他節點進行比較,如果只有一個小於這個新的節點,那麼就讓該節點和新的節點9合併(即讓節點9和節點8互為兄弟節點)並再次合併成一個新的節點(即:17) 3.重複上面的步驟,把再次合併後的新的節點帶入到原佇列中和剩下的其他節點相比,如果發現任然只有一個元素小於該節點,那麼就與該節點互為兄弟節點併合並,但如果剩下的節點中至少有2個節點不大於該合併後的新的節點我們就讓這兩個節點互為兄弟節點併合並他們。(即原佇列中存在13,17兩個節點其不小於新節點17,讓他們互為兄弟節點合併之) 4. 還是遵循節點間的權值差值最小的2個節點互為兄弟節點 因此不難發現新節點17與原佇列中剩下的節點24互為兄弟節點併合並,新節點30與原佇列中剩下的節點34互為兄弟節點 合併後的新節點為41和64,這是原佇列中所有的節點已經被合併完。故該哈夫曼樹的根節點為105。 哈夫曼樹構造思想如下圖: 在這裡插入圖片描述

整理後哈夫曼樹如下: 在這裡插入圖片描述 這樣構造出的哈夫曼樹滿足權值越小的節點離根節點越遠的特性! 怎麼樣是不是發現很簡單!有沒有學會! 這只是我個人在畫哈夫曼樹是總結出來的經驗,如有雷同不勝榮幸! 如果有什麼不同的觀點歡迎在下方評論!