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

news2024/11/23 21:14:14

一、平衡二叉树

平衡二叉树:是一棵空树它的左右两个子树的高度差的绝对值不超过 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.coloradmin.cn/o/1445799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux(Ubuntu)环境下安装卸载Python3(避免踩坑)

一、安装 第一步&#xff1a; 进入/usr/local/目录&#xff0c;下载Python3&#xff0c;这里我下载的是python 3.8.10&#xff0c;如果要下载其他版本改下链接中的版本号&#xff0c;需与官网版本号对应。 wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz第…

问题:入园前需要做好的准备包括( )。 #学习方法#其他#微信

问题&#xff1a;入园前需要做好的准备包括( )。 A.室内通风 B.清洁消毒 C.保健医晨检 D.准备用品和玩具 参考答案如图所示

AI新工具(20240209) ImgGen AI-免费在线AI图像生成应用;Smoothrase - 新一代的图像擦除技术等

ImgGen AI-免费在线AI图像生成应用 使用ImgGen的AI图像生成器&#xff08;文字转图像&#xff09;免费创建令人惊叹的图像&#xff0c;无水印&#xff0c;无需注册。包括功能、优势、定价、定位等。 Anything in Any Scene - 在现有的动态视频中无缝地插入任何物体&#xff0c…

java对象内部都有哪些东西

普通对象 对象头 markword 占8字节ClassPointer 指针 :-XX userCompressedClassPointrs 为4字节&#xff0c;不开启为 8字节实例数据 引用类型: -XX userCommpressedOops 为4字节&#xff0c;不开启8字节Padding对齐&#xff0c; 8的倍数 数组对象 对象头&#xff1a;markwor…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 2月12日,星期一

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年2月12日 星期一 农历正月初三 1、 注意错峰出行&#xff01;今起全国公路网流量将处于高位运行状态。 2、 中国旅游研究院&#xff1a;预计2024年国内旅游人数或超60亿人次。 3、 阔别四年&#xff0c;北京、贵阳、张家…

Halcon 频域缺陷检测

文章目录 傅里叶变换频谱矩形圆菱形黑白相间的亮带去除图纹&#xff08;反傅里叶变换&#xff09;去除图纹滤波器处理 Halcon 频域空间域检测缺陷Halcon 频域差分空间域 缺陷检测&#xff08;lines_gauss 提取线&#xff09;Halcon 频域差分空间域&#xff08;blob特征&#xf…

leetcode 461. 汉明距离

比较简单的一题&#xff0c;先对两个整数进行异或操作&#xff0c;会将两个整数二进制形式中各个数字进行异或操作&#xff0c;不同的数字则为1&#xff0c;再通过移位操作统计得到的二进制数中为1的个数&#xff0c;即为所求。 Java代码如下&#xff1a; class Solution {pub…

例38:使用Frame(分组框)

建立一个EXE工程&#xff0c;在窗体上放两个Frame框。分别放两组单选按钮表示性别和收入&#xff0c;注意每组单选按钮的组名要一样。在按钮中输入代码&#xff1a; Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)If Frame1.Visible ThenFrame1.Visib…

车载诊断协议DoIP系列 —— 协议中术语解释和定义

车载诊断协议DoIP系列 —— 协议中术语解释和定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…

EXCEL中如何调出“数据分析”的菜单

今天发现&#xff0c;原来WPS还是和EXCEL比&#xff0c;还是少了“数据分析”这个日常基本做统计的菜单&#xff0c;只好用EXCEL了&#xff0c;但奇怪发现我的EXCEL中没发现这个菜单&#xff0c;然后查了下&#xff0c;才发现&#xff0c;要用如下的方法打开&#xff1a; 1&…

基于Java (spring-boot)的电影院管理系统

一、项目介绍 基于Java (spring-boot)的电影院管理系统功能&#xff1a;管理员登录、用户注册、用户登录、用户、影片介绍、购票、选坐、支付、我的订单、影片、榜单、关于、后台首页、影院信息管理、电影信息管理、电影类别管理、影厅信息管理、场次信息管理、订单信息管理、用…

Solidworks:从2D走向3D

Sokidworks 的强大之处在于三维实体建模&#xff0c;这个形状看似复杂&#xff0c;实际上只需要拉伸一次&#xff0c;再做一次减法拉伸就行了。第一次做三维模型&#xff0c;费了不少时间才搞明白。 接下来做一个稍微复杂一点的模型&#xff0c;和上面这个操作差不多&#xff0…

《SQLi-Labs》05. Less 29~37

title: 《SQLi-Labs》05. Less 29~37 date: 2024-01-17 22:49:10 updated: 2024-02-12 18:09:10 categories: WriteUp&#xff1a;Security-Lab excerpt: HTTP 参数污染&#xff0c;联合注入、宽字节注入。 comments: false tags: top_image: /images/backimg/SunsetClimbing.p…

nodejs爬虫框架

nodejs爬虫框架 在Node.js中&#xff0c;有一些常用的爬虫框架可以帮助你实现网页抓取和数据提取的任务。以下是几个流行的Node.js爬虫框架&#xff1a; 1. **Puppeteer**: Puppeteer 是由 Google 开发的一个用于控制 headless Chrome 或 Chromium 浏览器的 Node.js 库。它提供…

【深度学习 目标检测】R-CNN系列算法全面概述(一文搞懂R-CNN、Fast R-CNN、Faster R-CNN的来龙去脉)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;相关专栏&#xff1a; 深度学习 &#xff1a;现代人工智能的主流技术介绍 机器学习 &#xff1a;相对完整的机器学习基础教学&#xff01; &#x1f4a1;往期推荐&#xff1a; 【机器学…

基于微信小程序的培训机构客户管理系统小程序

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开…

秋招上岸大厂,分享一下经验

文章目录 秋招过程学习过程项目经验简历经验面试经验offer选择总结 秋招过程 今天是除夕&#xff0c;秋招已经正式结束了&#xff0c;等春节过完就到了春招的时间点了。 运气比较好&#xff0c;能在秋招的末尾进入一家大厂&#xff0c;拿到20k的sp offer。 从九月份十月份就开…

MYSQL学习笔记:mysql运算符

MYSQL学习笔记&#xff1a;mysql运算符 select * from user where score in (99,100); select * from user where name like zhang%;通配符放到后面或者中间是可以利用索引的&#xff0c;但是通配符放到开头没法用到索引

2024年湖南省考报名时间及流程,选岗很重要!

注册时间&#xff1a;2024年2月18日9:00-25日17:00 报名时间&#xff1a;2024年2月19日9:00-25日17:00 网上确认时间&#xff1a;2024年2月28日9:00-3月2日24:00 缴费时间&#xff1a;2024年2月28日9:00-3月2日24:00 打印准考证时间&#xff1a;2024年3月11日9:00-15日17:00 考…

团队配置管理规范浅见

在一段时间的工作过程中配置管理工作确实对我们的生产活动产生了巨大的工作量&#xff0c;现在就这个工作来进行梳理一下。 本文主要分为两部分&#xff1a; 1、借用软件系统分析师的配置管理部分内容来介绍配置管理的工作&#xff08;原谅时间精力有限&#xff0c;原文基本已…