把一块木板据成N块不好想的话,那么把这个过程反过来:把N块木板拼成一块,每拼一次所需代价是两块木板长度之和。这样就是很明显的哈夫曼树了。
每次从现有的木板中选取最短的两块木板,拼在一起变成新的一块后放回去,重复这个过程直到只剩一块木板。
用最小堆实现以上操作就不会超时。
把一块木板据成N块不好想的话,那么把这个过程反过来:把N块木板拼成一块,每拼一次所需代价是两块木板长度之和。这样就是很明显的哈夫曼树了。
每次从现有的木板中选取最短的两块木板,拼在一起变成新的一块后放回去,重复这个过程直到只剩一块木板。
用最小堆实现以上操作就不会超时。