Deflate算法中的哈夫曼编码树是否一定要是一棵完整的树?

Does the Huffman Code Tree in Deflate algorithm have to be a complete tree?

Deflate算法中的哈夫曼码树一定要是完全树吗?我所说的完整树是指每个叶节点必须始终代表一个符号。换句话说,最后一个代码最长的符号将被分配给所有的。

举一个极端的例子:给定286个符号,每个符号用15位编码编码——这在一般的霍夫曼树编码中是可能的。然而,在这种情况下,有 2^15 - 286 个叶节点不是 assigned/used。在 Deflate 中允许吗?我的印象是这在 Deflate 中是不允许的,树必须是完整的。是真的吗?

除一种情况外,有效压缩流中动态块中描述的霍夫曼​​码必须是完整的。这些是位长度代码、literal/length 代码和距离代码。

一个例外是,如果只使用一个距离符号,则用一位(零)编码而不是零位,留下一个代码未使用(一位为一)。