一種編碼,它提供了 個 標記樹 (在
個節點上)與
個整數的字串之間的雙射,這些整數選自 1 到
的字母表。可以使用以下方法將標記樹轉換為 Prüfer 編碼LabeledTreeToCode[g] 在 Wolfram 語言 包中Combinatorica`,並且可以使用以下方法將程式碼轉換為 標記樹CodeToLabeledTree[code]。
Prüfer 的雙射基於以下事實:每棵樹至少有兩個度為 1 的節點(即,樹葉)。因此,與標籤最低的葉子關聯的節點 是唯一確定的,然後將
作為程式碼中的第一個符號。然後刪除此標籤最低的葉子,並重復該過程,直到只剩下一條邊,從而得到總共
個介於 1 和
之間的整數 (Skiena 1990)。這在上面顯示的標記樹中得到了證明。葉子刪除的順序是 4、6、2、1、7 和 3,分別對應於關聯節點 1、2、1、3、3 和 5。