4.数据结构期末复习之森林和最优二叉树(哈夫曼树)

文章讲述了森林与树的定义,包括前序和后序遍历。森林可转化为二叉树,通过特定规则将树转为二叉树,并介绍了森林转二叉树的过程。重点讨论了哈夫曼树,这是一种权值路径长度最小的二叉树,用于优化数据传输。哈夫曼编码能实现高效编码和解码,特点是权值大者离根节点近,且编码具有唯一性,无度为1的节点。
摘要由CSDN通过智能技术生成

1.森林的定义:m>=0 颗互不相交的树的集合
在这里插入图片描述
//树和森林的区别
在这里插入图片描述
2.森林的遍历 for森林里的树(前序和后序遍历)
3.树转二叉树(兄弟连起来,去右线)

1.兄弟之间加线(树和树之间不加)
2.右孩子去线(只保留第一个结点的线)
3.顺时针调整45度位置变成二叉树
在这里插入图片描述

在这里插入图片描述
4.森林转二叉树
1.树(全部的树依次)转二叉树
2.第一棵不动
3.第一棵的右边根节点连接第二棵的根节点,然后第2棵根节点连接第3棵的根节点
在这里插入图片描述

5.二叉树转树(去右孩子,连接右孩子[可以连接所有右孩子]) 上面的例子举例(连接上面去下面,与树转二叉树过程相反)
在这里插入图片描述
6.最优二叉树(哈夫曼树): 带权路径长度最小的二叉树(哈夫曼编码,是哈夫曼发明的)

1.权值: 叶子节点加个数字
带权路径长度(WPL Weighted Path Length): 求和 (根节点到叶的边数 * 权值) 如

A//这是最优二叉树(权值最小) 假设我们要发送信息是2 3 4,必须要编为0或1的二进制串
在这里插入图片描述

//这不是最优的
在这里插入图片描述
7.哈夫曼编码有什么用? 发消息如果不是最小权值(哈夫曼树)发消息会更费带宽(因为计算机是以二进制发送消息的)

8.哈夫曼编码的特点:

  1. 权值越大,离根节点更近
  2. 只有度为0和2的,没有度为0的

9.如何构造一颗最优二叉树? 给几个节点的权(其实代表发送的数据,想要最小网络带宽传输一段二进制)(一个最小WPL对应有多颗树,所以可能生成不同的样子)

1.找到最小的两个组合生成他们的节点,父节点的权为他们的和
2.在所有为组合的节点选最小的两个组合(包括新生成的父节点)

   如:
  A: 10    B: 8    C: 19   D:4   E:6   F:25

在这里插入图片描述
在这里插入图片描述

10.编码和解码

  1. 等长编码: 如 ASCII码是3位的
    不等长编码: 如哈夫曼编码 编出来的长度不唯一
  2. 解码: 有唯一性 需要满足任一编码不是其他编码的前缀(不重复);哈夫曼编码有唯一性
    编码: 没有唯一性

请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值