哈夫曼樹中求空指標域 二叉鍊錶中空指標域

2021-09-20 02:49:26 字數 795 閱讀 9037

做題目時遇到了這樣的一道題目

設哈夫曼樹中共有 99 個結點,則該樹中有 ____ 個葉子結點;若採用二叉鍊錶作為儲存結構,則該樹中有___個空指標域。

哈夫曼樹是正則二叉樹,沒有度為1的結點,n=n2+1+n0,n0=50,顯然第一空是50,但是第二空做題時的答案為51,我填的100,一開始比較懵,後面網上找了一些觀點看法,發現很多人在糾結二叉鍊錶到底是用雙孩子表示法還是孩子兄弟表示法,因為他們認為這兩者答案是不一致的。

很顯然,很多人被這個孩子兄弟法給搞懵了,我一開始也是這樣的,從一開始的答案為100猶豫變為51,然後又確定為100,一開始認為是100是因為我根本沒有考慮什麼孩子表示法,孩子兄弟表示法,按照常規的葉子結點n0必有2*n0個空指標域。但是後面對答案發現是51,網上找了一些,觀點都各有不同,當看到孩子兄弟表示法時,我改變主意了,發現好像是每個孩子都有乙個指標指向它的兄弟(根結點除外),於是我的答案變成了51。但是但是但是,後面我畫圖發現,其實孩子兄弟表示法,並不是每個結點都指向它的乙個兄弟的,每個右孩子結點是沒有兄弟的!!!而且所有的右葉子結點是沒有孩子和兄弟的,更直觀的請看下面面這幅圖。

所以現在有乙個結論為:孩子兄弟表示法和雙孩子表示法其實空指標域數都是葉子結點數的兩倍,但是不同的是雙孩子表示法的空指標域都是葉子結點的,而孩子兄弟表示法的空指標域一部分是葉子結點的,另一部分是其他右孩子結點的空指標域 。

二叉樹應用之哈夫曼編碼 二叉鍊錶實現

typedef struct node node,pnode 其中data儲存資料,count儲存資料的權值。pnext指向下乙個結點。lchild指向左子樹,rchild指向右子樹。具體實現,首先輸入資料判斷輸入的元素在表中是否存在,如果存在則相應的權值 1,若不存在,新增新的 結點在鍊錶末尾。然...

哈夫曼樹(最優二叉樹)

給定n個權值作為n的 葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小 所謂樹的帶權路徑長度,就是樹中所有的葉結點 的權值乘上其到根結點的路徑長度 稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹 huffman tree 哈夫曼樹是帶權路徑長度最短的樹,權值較大的結點離根較近。假設有n個權值,則構造出的...

二叉樹與哈夫曼樹

1,二叉樹 二叉樹可以分為 完全二叉樹,滿二叉樹,哈夫曼樹 二叉樹的遍歷 遞迴 先序,中序,後序遍歷 二叉樹的結構 根節點,左子樹,右子樹 二叉樹的性質 1 如果二叉樹的節點個數為n,則父節點的個數為n 2 2 若2i 1 3 若2i 2 二叉樹的構建 構建二叉樹 public void creat...