哈夫曼树及其应用

本文介绍了哈夫曼树的基本概念,包括结点路径、路径长度、带权路径长度等。接着详细阐述了如何构造哈夫曼树,遵循权值越大叶节点越靠近根结点的原则。哈夫曼编码是一种前缀编码,通过哈夫曼树的左分支为0,右分支为1来确定字符编码。最后讨论了Huffman编码算法的实现,包括结点结构和编码表的存储方式。
摘要由CSDN通过智能技术生成

1. 基本概念

① 结点路径:从树中一个结点到另一个结点的之间 的分支构成这两个结点之间的路径。

② 路径长度:结点路径上的分支数目称为路径长度。

③ 树的路径长度:从树根到每一个结点的路径长度之和。

④ 结点的带权路径长度:从该结点的到树的根结点 之间的路径长度与结点的权(值)的乘积。

⑤ 树的带权路径长度:树中所有叶子结点的带权路径长度之和,记做: WPL=w1 × l1+w2 × l2+ ⋯ +wn × ln=∑wi×li (i=1,2,⋯,n) 其中:n为叶子结点的个数;wi为第i个结点的权 值; li为第i个结点的路径长度。

⑥ Huffman树:具有n个叶子结点(每个结点的权值为wi) 的二叉树不止一棵,但在所有的这些二叉树中,必定存在一棵具有最小带权路径长度的二叉树,称这棵树为 Huffman树(或称最优树) 。

2.Huffman树的构造

构造哈夫曼树的原则:

  • 权值越大的叶结点越靠近根结点;
  • 权值越小的叶结点越远离根结点。

构造哈夫曼树的过程:

(1)给定的n个权值{W1,W2,…,Wn }构造n棵只有一个叶节点的二叉树, 从而得到一个二叉树的集合F={T1,T2,…,Tn }。

(2)在F中选取根节点的权

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值