鉴于 n 实数正数 A1,A2 .... 构建二叉树 T ,例如:
这个问题是在算法和数据结构测试期间给我的。我的回答是简单的建立一个二叉树,每个叶子是A1到An。 T 的权重将是 logn * Ai的总和。
我没有得到这个答案的分数。获得满分的答案是按频率对数字进行排序并构建霍夫曼树。
我的问题是为什么我的答案被忽略了?
如果A1到An都是非常小的数字,例如从0到1,则每个叶子的高度将成为计算树重量的重要因素。
帮助会很有意义。
答案 0 :(得分:3)
在原始数组A
中,可能会有一些元素比其他元素更多出现。您希望以某种方式构造树,树中最常见的元素比有些稀有元素高。
考虑此页面上的示例 - "A quick tutorial on generating a huffman tree"。 生成的霍夫曼树具有权重228,这是最佳的。
对于同一组,您可以得到的最佳完美平衡树的重量为241(深度为2的5和6,深度为3的其他元素),最差的294(切换5和6与1和2)。 你的解决方案会在这些之间找到一些东西,而不是最佳的。