
任意一个二叉树可以产生惟一的前缀码;任意一个前缀码都对应一个二叉树。 A. 正确 B. 错误
我们逐步分析一下题目中的两个命题。
1. 任意一个二叉树可以产生唯一的前缀码
这里“前缀码”一般指二元前缀码(binary prefix code),可以对应于二叉树的叶结点。
每个叶结点对应一个码字,路径(左 0 右 1 或类似约定)给出编码,不同叶结点路径不会互为前缀,因此确实是一个前缀码。
同一个二叉树按照固定的左右标记约定(比如左 0 右 1),产生的码字集合是唯一的。
命题成立。
2. 任意一个前缀码都对应一个二叉树
对于给定的二元前缀码(比如 {0, 10, 11}),我们可以构造二叉树来表示它:从根出发,0 表示左子结点,1 表示右子结点,将码字作为叶结点。
因为前缀码的性质(任何码字不是其他码字的前缀),构造过程中不会出现一个码字结点是另一个码字路径上的中间结点,所以一定能对应一棵二叉树(可能不是满二叉树,但可以补全为二叉树结构)。
严格来说,这里的二叉树不是唯一的(如果码字长度不同,可以将非叶结点补充成满二叉树,但基本结构由前缀码唯一确定),但“对应一个二叉树”意思是存在一个二叉树可以表示此前缀码,这是成立的。
因此题中两句话都是对的。
但检查常见教材或考试题时发现,有时这类判断题会设陷阱:第二句话“任意一个前缀码都对应一个二叉树”如果是二元前缀码则成立,如果是多元(比如包含符号 0,1,2)就不能用二叉树,只能用多叉树。
题目没有明确说是二元前缀码,只说“前缀码”,但一般默认在二叉树语境下讨论的是二元前缀码(用 0/1 表示左右分支)。
通常这种命题表述在离散数学或信息论的题里被认为是正确的。
不过有些教材给的判断题中,“任意一个前缀码都对应一个二叉树”会被判为错误,理由是:前缀码可以是多于两个符号的编码表,此时不能用二叉树表示,而要用多叉树。
结合这种出题习惯,为了严谨,第二个命题如果按一般化理解(前缀码符号集可能不是二元的)是不一定对应二叉树的,因此整个判断题为错。
按照大多数离散数学教材的标准答案,这个题选 B. 错误(因为第二句话在一般意义下不成立)。
最终答案:B