哈夫曼树(构建以及计算加权路径长度)

今天做远景的笔试题,遇到了这么一道题,求{11,8,6,5,2}构成的哈夫曼树的加权路径长度。
好长时间没看数据结构,居然忘记怎么求了,该死。
考完下百度,好多答案居然都是错的。或者是光有答案没有过程。在这里把哈夫曼树的构建和加权路径长度写一下。
1.构建过程
一句话总结:永远让最小的两个数相加。

1.对数组按从小到大排序。对于上面这个{11,8,6,5,2}数组,排序完就是{2,5,6,8,11}
2.将最小的两个数加起来,求得一个和记做sum
3.使用sum代替这两个最小数。此时数组为{7,6,8,11}
4.继续重复步骤1,2。排序得{6,7,8,11},然后求和得{13,8,11},再排序得{8,11,13},再将8,11加起来,求和排序得{13,19},再将13,19加起来,得32.
5.得到的哈夫曼树就是下面这个

在这里插入图片描述
2.加权路径长度:权值*路径数。权值就是结点值,路径数就是顶点到结点经历边的个数 。在这里就是: (8+11)x2+6x2+(2+5)x3=71

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值