1.问题
给定字符集C=x_1,x_2…x_n}和每个字符的频率f(x_i),求关于C的一个最优前缀码。
2.解析
3.设计
1.数组huffTree初始化,所有元素结点的双亲、左右孩子都置为null;
2.数组huffTree的前n个元素的权值置给定权值ptrArr [n];
3.进行n-1次合并
3.1在二叉树集合中选取两个权值最小的根结点,其下标分别为k1,k2;
3.2将二叉树k1、k2合并为一棵新的二叉树k;
4.分析
O(nlogn)频率排序;for循环O(n),插入操作O(logn),
算法时间复杂度是O(nlogn)
5.源码
https://github.com/8455580/homework/blob/main/11/11.cpp