1 最优二叉树——哈夫曼树 【重点与难点】 1. 带权二叉树与哈夫曼树基本概念; 2. 构造哈夫曼树; 3. 哈夫曼编码及其算法实现
【引入】 在实际应用中,常常要考虑一个问题:如何设计一棵二叉树,使得执行路径最短,即算法的效率最高
1 快递包裹的邮资问题 假设邮政局的包裹自动测试系统能够测出包裹的重量,如何设计一棵二叉树将包裹根据重量及运距进行分类从而确定邮资
国内快递包裹资费 单位:元 (2004 年 1 月 1 日起执行) 运距(公里) 首重 1000 克 5000 克以内续重每 500 克 5001 克以上续重每 500 克 6000 20
00 表 7
1 国家邮政局制定的快递包裹参考标准 根据表 7
1 可以制定出许多种二叉树,但不同的二叉树判定的次数可能不一样,执行的效率也不同
2 铁球分类 现有一批球磨机上的铁球,需要将它分成四类:直径不大于20的属于第一类;直径大于20而不大于50的属于第二类;直径大于50而不大于100的属于第三类;其余的属于第四类;假定这批球中属于第一、二、三、四类铁球的个数之比例是 1:2:3:4
我们可以把这个判断过程表示为 图 7
1中的两种方法: 2 图 7
1 两种判断二叉树示意图 那么究竟将这个判断过程表示成哪一个判断框,才能使其执行时间最短呢
让我们对上述判断框做一具体的分析
假设有 1000个铁球,则各类铁球的个数分别为:100、200、300、400; 对于图 7
1中的左图和右图比较的次数分别如表 7
2所示: 左图 右图 序号 比较式 比较次数 序号 比较式 比较次数 1 a100 1000 2 a50 600 3 a