软件23-上午题-树与二叉树2

一、平衡二叉树

平衡二叉树:是一棵空树它的左右两个子树的高度差的绝对值不超过 1, 并且左右两个子树都是一棵平衡二叉树

注意:

完全二叉树 = 平衡二叉树!!!

二、二叉排序树(二叉查找树、二叉搜索树)

2-1、二叉排序树的定义

对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小右子节点的值比当前节点的值大(如果有相同的值,则该节点放在左子节点或右子节点都可)。

左子树节点的值 < 根节点的值 < 右子树结点的值

二叉排序树的特点:

中序遍历,得到的序列是有序序列。

示例:

2-2、二叉排序树的构造

出题方式:给一组关键字序列,用这组关键字序列构造二叉排序树。

构造方式:第一个关键字是根节点,然后依次遍历后面的关键字,比根节点小的,就往左挂,比根节点大的就往右挂。

示例:23 31 17 19 11 27 13 90 61

不同的关键字序列可以构造相同的二叉排序树。

2-3、真题

真题1:

真题2:

真题3:

真题4:

真题5:

三、最优二叉树(哈夫曼树)

3-1、哈夫曼树的定义

带权路径长度最短的树。

结点的带权路径长度:该节点到树根之间的路径长度 * 该节点的权值

树的带权路径长度 = 树中所有叶子结点的带权路径长度只和。

示例:

3-2、构造哈夫曼树

给定n个权值{w1, w2, w3, ......, w4, w5},构成n棵二叉树的集合F = {T1, T2, T3, ......, Tn};

1、选择根结点权值最小的两棵二叉树,并以它们为左右子树构造一棵新的二叉树,新二叉树根结点的权值为其左右子树根结点权值之和。 

2、从F中删除选择的两棵二叉树,并将新二叉树放到集合F中,继续步骤1。

以选中的两棵子树构成新的二叉树,哪个作为左子树,哪个作为右子树,并没有明确。所以,最优二叉树不唯一,但其 WPL的值是唯一确定的

构造哈夫曼树的原则:(能够减小二叉树的带权路径长度)

权值大的叶子结点离根结点近;

权值小的叶子结点离根结点远

3-3、哈夫曼树的性质

1、只有度为0、2,没有度为1的节点;

2、用n个节点构造哈夫曼树,这n个节点都会变成叶子结点;

3、哈夫曼树的总节点个数:2n-1;

3-4、哈夫曼树的构造规律

  • 从前往后,找两个权值最小的;
  • 构造的时候,左小右大;
  • 新的根节点,加入到结尾
  • 权值相同,从前往后取结点
  • 用时再调

目的:正确求出哈夫曼编码

3-5、哈夫曼编码

英文字符集中的26个字符可用?位二进制位表示?

2^5 = 32 > 26

即可用5位二进制位表示。

规定哈夫曼树中的左分支为0,右分支为1,从根节点到叶子结点所经过的分支对应的0和1组成的序列便为该节点对应字符的编码。

示例:

哈夫曼编码的特点:

        在一组字符的哈夫曼编码中,不可能出现一个字符的哈夫曼编码是另一个字符哈夫曼编码的前缀。 

3-6、哈夫曼编码压缩比

示例:

因为有5中不同的字符,2^3 = 8 >= 5,所以,等长编码最少有3位。

以频率作为权重,构造哈夫曼树:

因此,各字符的编码为:

按照出现频率计算加权平均长度:字符位数 * 出现频率

a的位数 * 40% + b的位数 * 10% + c的位数 * 20% + d的位数 * 16% + e的位数 * 14%

= 1 * 40% + 3 * 10% + 3 * 20% + 3 * 16% + 3 * 14%

= 2.2位 

计算压缩比

未压缩长度为 3 ,压缩后平均长度为 2.2

(3 - 2.2)/3 = 27%

3-7、真题

真题1:

n0 = n2 + 1 

真题2:

真题3:

真题4:

真题5:

真题6:

真题7:

真题8:

真题9:

真题10:

真题11:

四、线索二叉树

每当涉及到求解前驱或者后继就需要将二叉树遍历一次,非常不方便。可以考虑在每个节点中增加两个指针域来存放遍历时得到的前驱和后继信息。但是,增加指针信息会降低存储空间的利用率。

对于一个有n个结点的二叉链表,每个节点都有指向左右孩子的两个指针域,一共有2n个指针域,n个结点的二叉树又有n-1条分支线数,也就是存在2n-(n-1)=n+1个空指针域。因此, 可以用空链域来存放结点的前驱和后继

示例:

中序遍历:B  C  A  D  E 

五、二叉树类别小结

  • 满二叉树
  • 完全二叉树
  • 平衡二叉树
  • 排序二叉树
  • 最优二叉树
  • 线索二叉树

完全二叉树,是,平衡二叉树

六、真题 

真题1:

 真题2:

真题3:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/467249.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法-----高精度算法1(高精度加法,高精度减法)(详解)

什么是高精度算法&#xff1f; 高精度的意思就是他得名字----高的精度&#xff0c;简单说就是位数很大&#xff0c;而高精度算法就是将这些高精度数&#xff08;位数很大在几百几千几万位的数叫高精度数&#xff09;通过计算机的型式模拟出来结果。 为什么要用高精度算法&…

坚持刷题|环形链表

文章目录 题目考察点代码实现扩展问题 Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;刷了一段时间二叉树啦&#xff0c;今天换链表刷&#xff1a;环形链表 题目 141. 环形链表 考察点 主要考察了链表的基本操作和快慢指…

PySQLRecon:一款功能强大的MSSQL安全测试工具

关于PySQLRecon PySQLRecon是一款功能强大的MSSQL安全测试工具&#xff0c;该工具基于SQLRecon实现其功能&#xff0c;可以帮助广大红队研究人员针对MSSQL执行攻击性安全测试。 环境配置 由于该工具基于Python 3开发&#xff0c;因此我们首先需要在本地设备上安装并配置好Pyt…

【51单片机】矩阵键盘(江科大)

6.1矩阵键盘 矩阵键盘&#xff1a; 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态 1.数码管扫描(输出扫描) 原理:显示第1位→显示第2位→显示第3位→ …… ,然后快速循环这个过程,最终实现所…

软件架构与系统架构:区别与联系的分析

软件架构与系统架构&#xff1a;区别与联系的分析 在信息技术领域&#xff0c;软件架构和系统架构这两个术语经常被提及。尽管它们在某些方面有重叠&#xff0c;但它们确实代表了不同的概念和聚焦点。理解这两种架构之间的区别和联系对于任何从事技术开发和设计的专业人士都是至…

【复现】Supabase后端服务 SQL注入漏洞_48

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 Supabase是什么 Supabase将自己定位为Firebase的开源替代品&#xff0c;提供了一套工具来帮助开发者构建web或移动应用程序。 Sup…

高效的工作学习方法

1.康奈尔笔记法 在这里插入图片描述 2. 5W2H法 3. 鱼骨图分析法 4.麦肯锡7步分析法 5.使用TODOLIST 6.使用计划模板&#xff08;年月周&#xff09; 7. 高效的学习方法 成年人的学习特点&#xff1a; 快速了解一个领域方法 沉浸式学习方法&#xff1a; 沉浸学习的判据&am…

TapableHookPlugins

以极客时间《玩转Webpack》课程学习为主的记录笔记。 源码解读 webpack的命令跟踪&#xff0c;从node_modules/webpack/bin/ 可以看到命令内容&#xff0c;webpack会查看是否下载安装了webpack-cli / webpack-command。使用webpack-cli 解析命令行信息、安装使用到的依赖&…

浅谈jmeter性能测试步骤入门

一、Jmeter简介 1 概述 jmeter是一个软件&#xff0c;使负载测试或业绩为导向的业务&#xff08;功能&#xff09;测试不同的协议或技术。 它是 Apache 软件基金会的Stefano Mazzocchi JMeter 最初开发的。 它主要对 Apache JServ&#xff08;现在称为如 Apache Tomca…

相机图像质量研究(12)常见问题总结:光学结构对成像的影响--炫光

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(3) 保存表格数据

对上两篇篇的工作C Qt框架开发| 基于Qt框架开发实时成绩显示排序系统&#xff08;1&#xff09;-CSDN博客和C Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统&#xff08;2&#xff09;折线图显示-CSDN博客继续优化&#xff0c;增加一个保存按钮&#xff0c;用于保存成绩数据…

WebSocket原理详解

目录 1.引言 1.1.使用HTTP不断轮询 1.2.长轮询 2.websocket 2.1.概述 2.2.websocket建立过程 2.3.抓包分析 2.4.websocket的消息格式 3.使用场景 4.总结 1.引言 平时我们打开网页&#xff0c;比如购物网站某宝。都是点一下列表商品&#xff0c;跳转一下网页就到了商品…