面试刷题

java专项

image-20240406203857878

解析:interface中的方法默认为public abstract,所以这个默认变成了public abstract void main,我记成了public static乐

常量默认为public static final

image-20240406205012665

首先,根据哈夫曼树的构建过程,我们需要将权值从小到大排序,并且每次选择两个最小的权值合并,生成新的节点,其权值为这两个最小权值之和。然后,将新生成的节点权值放回集合中,再次进行选择和合并,直到只剩下一个节点,这个节点就是哈夫曼树的根节点。

按照权值排序:2,5,6,8,11。

  1. 选择最小的两个权值2和5合并,生成新节点,权值为2+5=7。 现在的权值集合为:6,7,8,11。
  2. 再次选择最小的两个权值6和7合并,生成新节点,权值为6+7=13。 现在的权值集合为:8,11,13。
  3. 再次选择最小的两个权值8和11合并,生成新节点,权值为8+11=19。 现在的权值集合为:13,19。
  4. 最后,合并剩下的两个节点13和19,生成根节点,权值为13+19=32。

按照这个方法,我们得到的哈夫曼树如下:

image-20240406205337990

接下来,计算带权路径长度。带权路径长度是指从根节点到每个叶子节点的路径长度与其权值的乘积之和。

对于每个叶子节点,其路径长度就是它在哈夫曼树中的深度。例如,权值为11的叶子节点的路径长度为2,因为它距离根节点的深度为2。

带权路径长度的计算如下:

1