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為根結點 兩者相等,所以答...