带权路径:是树中所有的叶结点的权值乘上其到根结点的路径长度。
哈夫曼树就是带权路径最小的树。
有n个数(即n个叶子节点),构造k叉(k>=2)哈夫曼树的方法;
构造哈夫曼树,其实就是不停的“合并”的过程。并且每次合并,我们都是取前k个最小的数。想的到,算法的主要复杂就在于如何取前k个最小的数;不停排序或者优先队列、堆都可以做到,但复杂都接nlogn,那么我们可不可以只排序一次就能每次都取出前k个数呢?
答案是能!
带权路径:是树中所有的叶结点的权值乘上其到根结点的路径长度。
哈夫曼树就是带权路径最小的树。
有n个数(即n个叶子节点),构造k叉(k>=2)哈夫曼树的方法;
构造哈夫曼树,其实就是不停的“合并”的过程。并且每次合并,我们都是取前k个最小的数。想的到,算法的主要复杂就在于如何取前k个最小的数;不停排序或者优先队列、堆都可以做到,但复杂都接nlogn,那么我们可不可以只排序一次就能每次都取出前k个数呢?
答案是能!