数据结构—最优二叉树(赫夫曼树)详解

本文介绍了最优二叉树的概念,包括权值、树的带权路径长度,并通过示例比较了不同树的WPL,展示了如何通过赫夫曼算法构造最优二叉树的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们知道了数、森林、二叉树之后。我们就很好理解最优二叉树,下面从这两个方面展开讨论来认识最优二叉树。

一.什么样的数是最优二叉树?

权:指两个节点的长度值

树的带全路径=所有叶子节点的带权路径之和,

树的路径长度:从树根到每个叶子节点的路径长度之和

eg.

下面我们根据树的带权路径计算公式来判定一下哪棵树是最优二叉树,

WPL=7*2+5*2+2*2+2*4=36——a

WPL=7*3+5*3+2*1+4*2=46——b

WPL=7*1+5*2+2*3+4*3=35——c

由此我们可以看出,(c)即为最优二叉树

 

二.怎样得到一棵最优二叉树?

赫夫曼给出了一个带有一般规律的算法,俗称赫夫曼算法

(1)根据给定的n个权值(w1,,w2,w3......wn)构成n棵二叉树集合F={T1,T2,T3......Tn}其中每棵二叉树Ti中只有一个带权的Wi的根节点其左右子树均空。

(2)在F中选取两课根节点的权值最小的树作为左右子树构成一棵新的二叉树,且置新的二叉树根结点的权值为左右子树上根结点的权值之和。

(3)在F中删除这两棵树,同时将新得到的二叉树加入F中。

(4)重复进行(2)(3),直到F只含一棵树为止,这棵树便是赫夫曼树。

构造过程如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值