當我們構建一個由99個結點構成的哈夫曼樹,并使用二叉鏈表表示時,會注意到有51個空指針域。這個現象源于二叉鏈表的結構特點。在二叉鏈表中,每個節點通常只有一個子節點,且遵循“左孩子右兄弟”的規則,這意味著除了根節點外,每個節點都有一個空指針域指向其兄弟節點。對于99個節點的哈夫曼樹,其中50個是葉子節點,這些葉子節點沒有兄弟節點,因此它們不需要空指針。而剩余的99-50=49個非葉子節點中,每個節點都有一個兄弟節點,因此它們需要一個空指針。加上根節點的空指針,總共是49+1=50個空指針。考慮到根節點的特殊性,它沒有兄弟,所以根節點也需要一個額外的空指針域,這就構成了51個空指針的總和。
這種空指針的計算與哈夫曼樹的性質有關,它是通過霍夫曼編碼算法生成的,該算法根據源符號出現的頻率生成變長編碼。在構建哈夫曼樹時,目標是使得帶權路徑長度(WPL)最小,這意味著樹的結構被優化以最小化每個節點到根節點的路徑總和。因此,盡管哈夫曼樹的構建過程復雜,但其在二叉鏈表表示時的空指針分布是根據這種優化結構決定的。