資料結構 JAVA描述(五)哈夫曼樹,樹與森林

2021-07-09 05:46:36 字數 1932 閱讀 6640

package bitree;

/** *@description 哈夫曼樹結點結構

* *@date 2023年12月30日

*/class huffmannode

// 構造乙個具有權值的結點

public

huffmannode(int weight)

public

intgetweight()

public

void

setweight(int weight)

public

intgetflag()

public

void

setflag(int flag)

public huffmannode getparent()

public

void

setparent(huffmannode parent)

public huffmannode getlchild()

public

void

setlchild(huffmannode lchild)

public huffmannode getrchild()

public

void

setrchild(huffmannode rchild)

}/**

*@description 構造哈夫曼樹和哈夫曼編碼

* *@date 2023年12月30日

*/public

class

huffmantree

//建立哈夫曼樹

for(int i = n; i < m; i++)

// 從葉子結點到根 逆向求每個字元的哈夫曼編碼

int huffcode = new

int[n][n];

for(int j = 0; j < n; j++)

else

// 編碼開始標誌是-1

huffcode[j][start] = -1;}}

return huffcode;

}/**

*@description 在hn[0……i-1]選擇不在哈夫曼樹中且weight最小的結點

*@param hn

*@param end

*@return

*@author liuquan

*@date 2023年12月30日

*/private huffmannode selectmin(huffmannode hn, int end)

}return min;

}public

static

void

main(string args) ;

huffmantree t = new huffmantree();

//求哈夫曼編碼

int hn = t.huffmancoding(w);

system.out.println("哈夫曼編碼為:");

for(int i = 0; i < hn.length; i++)

break;}}

system.out.println();

}}

}

樹轉換成二叉樹:

二叉樹轉換成樹:

森林與二叉樹的轉換

結點包含 資料域資訊data + 父結點在儲存結構中的位置資訊parent。parent=-1代表其是根結點。

結點包含 資料域資訊data + 孩子鍊錶的頭指標firstchild。

結點包含 資料域資訊data + 父結點在儲存結構中的位置資訊parent +孩子鍊錶的頭指標firstchild。

結點包含 資料域資訊data + (左指標)孩子鍊錶的頭指標firstchild + (右指標)該結點的下乙個兄弟nextsibling

資料結構 哈夫曼樹 哈夫曼編碼

哈夫曼樹又稱最優樹 二叉樹 是一類帶權路徑最短的樹。構造這種樹的演算法最早是由哈夫曼 huffman 1952年提出,這種樹在資訊檢索中很有用。結點之間的路徑長度 從乙個結點到另乙個結點之間的分支數目。樹的路徑長度 從樹的根到樹中每乙個結點的路徑長度之和。結點的帶權路徑長度 從該結點到樹根之間的路徑...

哈夫曼編碼 哈夫曼樹 (資料結構)

哈夫曼編碼,又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼 vlc 的一種。huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做huffman編碼 有時也稱為霍夫曼編碼 include include inc...

資料結構 C描述 筆記 哈夫曼樹

葉子結點的權值 對葉子結點賦予的乙個有意義的數值量。二叉樹的帶權路徑長度 設二叉樹具有n個帶權值的葉子結點,從根結點到各個葉子結點的路徑長度與相應葉子結點權值的乘積之和。給定一組確定權值的葉子結點,帶權路徑長度最小的二叉樹 n個結點權值w1,w2,wn 第一步 將這n個結點分別作為僅含乙個結點的二叉...