- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
给定 n 个正数 A1,A2....An 构建一棵二叉树 T 例如:
这个问题是在算法和数据结构的测试中给我的。我的简短回答是构建一棵二叉树,使每个叶子都是 A1 到 An。 T 的权重将是 logn*Ai 的总和。
我没有得到这个答案的分数。获得满分的答案是按频率对数字进行排序并构建霍夫曼树。
我的问题是为什么我的回答被忽略了?
如果A1到An都是非常小的数,比如0到1,那么每片叶子的高度就会成为计算树的权重的主导因素。
我们将不胜感激。
最佳答案
在原始数组 A
中,某些元素的出现次数可能比其他元素多得多。您希望以某种方式构建树,使最常见的元素在树中的位置高于不太常见的元素。
考虑此页面上的示例 - "A quick tutorial on generating a huffman tree" .生成的哈夫曼树权重为228,最优。
对于同一组,您可以获得的最佳完美平衡树的权重为 241(5 和 6 的深度为 2,其他元素的深度为 3),最差的为 294(将 5 和 6 与 1 和 2 切换)。您的解决方案会在两者之间找到一些东西,而不是最佳的。
关于algorithm - 霍夫曼树与二叉平衡树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21665165/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我这样定义了一个二叉树: struct btree { int x; btree* left_child = nullptr; btree* right_child = nul
我有这个霍夫曼代码,旨在返回数组中每个字母的霍夫曼代码并按字母顺序打印它们。问题是它不生成任何输出,而是继续处理,直到我手动退出它。谁能帮我找出错误吗?我认为我的代码是正确的,但我不知道无限循环从何而
动机 想象一下一个哈夫曼压缩文件被部分下载,就像在p2p软件中一样,所以我们首先为整个文件分配磁盘空间,然后开始随机下载文件块。其中一个哈夫曼密码(但我们不知道是哪一个)是一个结束密码,所以如果这个密
以下 block 由霍夫曼 block 标记嵌套 -HUFF---------------------------------------------------------------------0
我是一名优秀的程序员,十分优秀!