学习笔记:数据结构与算法(十三):赫夫曼树

本文介绍了赫夫曼树的概念,包括定义、路径长度和带权路径长度等。通过构造过程展示了如何形成赫夫曼树,并解释了变长编码中的前缀码。赫夫曼编码利用树的结构,用0和1表示左子树和右子树,以实现高效的数据压缩。此外,还提及了赫夫曼编码在数据结构和算法中的应用。

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

学习笔记:数据结构与算法(十三):赫夫曼树

赫夫曼树

定义

把两棵二叉树简化成叶子结点带权的二叉树(树结点间的连线相关的数叫做权)
结点的路径长度:从根结点到该结点的路径上的连接数
树的路径长度:树中每个叶子结点的路径长度之和
结点带权路径长度:结点的路径长度与结点权值的乘积
树的带权路径长度:树中所有叶子结点的带权路径长度之和。
在这里插入图片描述

构造过程

  1. 在森林中选出两棵根结点的权值最小的二叉树
  2. 合并选出的两个二叉树,新增加一个结点作为他俩的根,权值为二者之和。
  3. 在森林里选出两棵根结点的权值最小的二叉树,进行合并
  4. 操作同2,重复3-2-3-2.

名词解释

定长编码:像ASCⅡ码
变长编码:单个编码的长度不一致,可以根据整体出现频率来调节。
前缀码:没有任何码字是其他码字的前缀

赫夫曼编码

在这里插入图片描述
左子树用0来表示,右子树用1表示。圆圈里是结点的权值。
创建树之前,先创建一个具有优先级的队列,表示出现的次数,也就是权值。

代码可能没法放上来了,因为视频里没给完全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值