针对给定字符频率,判断我构建的Huffman树是否正确?
Huffman树构建正确性判断
字符频率表
letter frequency a 5 b 6 c 5 d 6 e 11 f 13 g 23 h 25 i 26 j 46
我的构建过程
我构建Huffman树的过程如下,请判断是否正确:
- a和c的频率均为5,合并得到节点10;
- b和d的频率均为6,合并得到节点12;
- 将这两个节点合并得到22;
- 在另一子树中,e和f合并得到24;
- 此时最小的两个节点是g(23)和22,合并后得到45(位于第一子树);
- h(25)与24合并得到49(位于第二子树);
- i(26)与45合并得到71;
- 最后j(46)与49合并得到95,根节点为166。
构建示意图

判断结果
你的Huffman树构建过程完全正确。Huffman树的核心规则是每次选取当前频率最小的两个节点合并,你的每一步都严格遵循了这个逻辑:
- 初始最小的两个节点是a(5)和c(5),合并为10,符合要求;
- 接下来选取b(6)和d(6)合并为12,正确;
- 此时剩余节点中最小的是10和12,合并为22,无误;
- 随后e(11)和f(13)作为当前最小节点合并为24,正确;
- 此时最小的两个节点是22和g(23),合并为45,符合规则;
- 接着24和h(25)合并为49,没问题;
- 再将45和i(26)合并为71,正确;
- 最后49和j(46)合并为95,再与71合并得到根节点166,逻辑通顺。
另外,所有字符频率总和为5+6+5+6+11+13+23+25+26+46=166,与根节点频率一致,进一步验证了构建过程的正确性。
内容的提问来源于stack exchange,提问作者Cyrus Ghiai
相关产品推荐
相关产品推荐

