构造哈夫曼树

考研数据结构:哈夫曼树构建方法

在考研数据结构里一般小的数据量用眼瞅法就可以实现,但是!若数据量变大,这种方法很容易变得困难和不准确。

哈夫曼树的构建方法可以通过使用优先队列(最小堆)进行自动排序和合并,极大地减少了手动计算和尝试的复杂性。

eg:天津大学2007年实做题

2,3,5,7,11,13,17,19,23,29,31,37,41构建哈夫曼树

 初始化:将所有权值视为单个节点放入优先队列(最小堆),初始节点有如下13个权值。

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]

我懒得插入图片了,就按照以下的步骤顺序画哈夫曼树就行,超顺利,而且权值一定最小

步骤1:从队列中选取权值最小的两个节点 23,合并成一个新的节点,权值为 2 + 3 = 5,将其插入队列。

[5, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]

步骤2:取出最小的两个节点 55,合并为一个新的节点,权值为 5 + 5 = 10,并插入队列。

[5, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]

步骤3:继续取出最小的两个节点 710,合并为 17,并插入队列。

[11, 13, 17, 17, 19, 23, 29, 31, 37, 41]

步骤4:取出最小的两个节点 1113,合并为 24,并插入队列。

[17, 17, 19, 23, 24, 29, 31, 37, 41]

步骤5:取出 1717,合并为 34,插入队列。

[19, 23, 24, 29, 31, 34, 37, 41]

步骤6:取出 1923,合并为 42,插入队列。

[24, 29, 31, 34, 37, 41, 42]

步骤7:取出 2429,合并为 53,插入队列。

[31, 34, 37, 41, 42, 53]

步骤8:取出 3134,合并为 65,插入队列。

[37, 41, 42, 53, 65]

步骤9:取出 3741,合并为 78,插入队列。

[42, 53, 65, 78]

步骤10:取出 4253,合并为 95,插入队列。

[65, 78, 95]

步骤11:取出 6578,合并为 143,插入队列。

[95, 143]

步骤12:最后,取出 95143,合并为 238,最终形成根节点。

[238]

哈夫曼树总结

通过以上步骤,所有权值已合并形成一个完整的哈夫曼树,根节点权值为 238。树的构建过程以最低代价合并权值的方式进行,确保了哈夫曼树的最优性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值