数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树

树与二叉树的应用

文章目录:

1.哈夫曼树与哈夫曼曼编码

引入1.1:在学习哈夫曼树和哈夫曼编码之前预备知识

1.1 带权路径长度

结点的权:理解为权重,重要性。
结点的带权路径长度:树根到该结点的路径长度(经过的边数✖️该结点的权值)
树的带权路径长度(WPL):树中所有叶结点的带权路径长度之和。
在这里插入图片描述

引入1.2 :在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树。

1.2 哈夫曼树

1.2.1 哈夫曼树的构造

构造步骤:
1️⃣ 找到当前权值最小的两个结点(包括两个结点构造出的新结点)
2️⃣ 将这两个结点通过一个构造出的父结点联系起来,父结点的权值是他俩权值之和。
3️⃣重复上面的步骤,直到没有结点可以添加

哈夫曼树特点:

  • 每个初始结点最终都成为叶结点,且权值越小的结点到根结点的路径长度越大
  • 哈夫曼树的结点总数为2n-1
  • 哈夫曼树中不存在度为1的结点
  • 哈夫曼树并不唯一,但WPL必然相同且为最优。
    在这里插入图片描述

引入1.3 :哈夫曼树的应用->哈夫曼编码,简单理解成,把英文字母用最少的比特表达出来。常用的字母,访问的频率高,权值就高,尽可能的放在树层次低的位置,好进行查找。而构造哈夫曼树,就是用编码的字母配上上他们的权值,构造出一个哈夫曼树,然后做分支算0,右分支算1,将字母编码,不重不漏,且最优,访问时间最快。

1.3 哈夫曼编码

固定长度编码:每个字符用相等长度的二进制位表示
可变长度编码:允许对不同字符用不等长长的二进制位表示
前缀编码:若没有
一个编码是另一个编码的前缀,则称这样的编码为前缀编码。

特点:哈夫曼树不唯一,哈夫曼编码也不唯一,但是WPL是一样的

2.并查集

2.1 并查集的三要素

2.1.1 并查集的逻辑结构

并查集划分不同的集合。
将各种元素划分为若干互不相交的子集。
在这里插入图片描述
让这些子集组成一颗树,指向一个子集的根结点
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二叉树果实

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值