一种编码,它提供了 个 标记树 (在 个节点上)与 个整数的字符串之间的双射,这些整数选自 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。