【发布时间】:2014-02-09 21:18:06
【问题描述】:
给定n个实正数A1,A2....An构建一棵二叉树T如:
- 每个数字都是一片叶子。
- T 的权重将尽可能小。树的重量等于每片叶子的总和乘以它的高度。
这个问题是在算法和数据结构的测试中给我的。我的简单回答是构建一棵二叉树,使得每个叶子都是 A1 到 An。 T 的权重将是 logn*Ai 的总和。
我没有得到这个答案的分数。获得满分的答案是按频率对数字进行排序并构建霍夫曼树。
我的问题是为什么我的回答被忽略了?
如果A1到An都是很小的数字,例如0到1,那么每个叶子的高度将成为计算树权重的主导因素。
不胜感激。
【问题讨论】:
-
这个问题最好在programmers.stackexchange.com 提出,因为它是针对该站点的主题讨论。参考:programmers.stackexchange.com/help/on-topicCheers.
-
第二个条件我不清楚,这是否意味着你将叶子深度乘以它存储的数字的频率(原始数组 A 中的频率),或者深度乘以数字本身?跨度>
标签: algorithm data-structures binary-tree