哈夫曼編碼問題,高手幫我,哈夫曼編碼問題 大神救我

時間 2022-06-30 23:20:09

1樓:

createht建立哈夫曼樹的**有點問題,修改如下void createht(htnode ht,int n){int i,k,lnode,rnode;

int min1,min2;

for(i=0;i<2*n-1;i++)

ht[i].parent=ht[i].lchild=ht[i].rchild=-1;

for(i=n;i<2*n-1;i++)

{min1=min2=32767;

lnode=rnode=-1;

for(k=0;k<=i-1;k++)

{if(ht[k].parent==-1){if(ht[k].weight

第乙個for迴圈從n開始

查詢兩個最小結點時有點問題,分開兩次查詢吧。

根據上面的修改,你再測試一下。

請教乙個哈夫曼編碼問題

2樓:出家人詞悲

兩個最小的編碼沒有左右之分.

是不同,哈夫曼編碼不是唯一的,但是它們的wpl(帶權路徑長度)都是一樣的.

如果,最下面有兩個二叉樹,那麼也不用考慮左右的問題,你只將最下面兩個二叉樹當作兩個節點就可以了.

記住:哈夫曼編碼不是唯一的.

哈夫曼編碼力求使wpl(帶權路徑長度)最小,而不是讓二進位制**最短.

是wpl最小,哈夫曼編碼將令權值大的長一些,權值小的短一些.

我來回答你的追問啊.

你的第二種編碼方式是錯誤的.按照哈夫曼編碼規則,a不可能長度只有1.你可以把你的圖貼出來.

我相信你的編碼方式一定不對.哈夫曼編碼總是合併最小的兩個,如果a的長度只有1,那麼你的最後一種合併一定是17和7合併.正確的應該:

2和4合併,5和某乙個6合併,6和7合併,11和13合併.

解碼系統,對文字檔案中的字元進行哈夫曼編碼,生成編碼檔案(壓縮檔案,字尾名 co

超人先生一號 我給你個差不多的,你自己修改一下就可以用了 huffman編碼和解碼 include include include include typedef struct htnode,huffmantree typedef struct huffmancode typedef struct ...

求助有關哈夫曼樹的問題!急!滿意的答案再加

楊嘉路 路徑和路徑長度 若在一棵樹中存在乙個結點序列k1,k2,kj 使得ki是ki 1的雙親 1 i j 則稱此結點序列是從k1到kj的路徑。從k1 kj所經過的分支數稱為這兩結點間的路徑長度。結點的權和帶權路徑長度 在許多應用中,常為樹中的結點賦上一有意義的實數,該實數稱為結點的權。結點的帶權路...

關於哈夫曼樹的問題,各位可以幫小女子看看嘛

這題表示哈夫曼樹的節點的度要麼是0要麼是m設度不為0 即非葉結點 的個數為x 則總的結點數為 x n 除根結點外,其餘的每乙個結點都有乙個分支連向乙個結點,對於度為m的每個結點都有m個分支,而度為0的結點是沒有分支的,所以從分支的情況來看 總的結點數字 x m 1 這裡的1為根結點 兩者相等,所以答...