数据结构学习记录——堆的小习题(对由同样的n个整数构成的二叉搜索树(查找树)和最小堆,下面哪个说法是不正确的)

news2025/1/18 9:59:44

目录

习题一

习题二

习题三

答案区

解析区

习题一

习题二

习题三


习题一

一、下列序列中哪个是最小堆?

\textbf{A}.2,55,52,72,28,98,71

\textbf{B}.2,28,71,72,55,98,52 

\textbf{C}.2,28,52,72,55,98,71

\textbf{D}.28,2,71,72,55,98,52

 

习题二

二、在最大堆 {97,76,65,50,49,13,27}中插入83后,该最大堆为:

\textbf{A}.{97,76,65,83,49,13,27,50}

\textbf{B}.{97,83,65,76,49,13,27,50} 

\textbf{C}.{97,83,65,76,50,13,27,49}

\textbf{D}.{97,83,65,76,49,50,13,27}

习题三

对由同样的n个整数构成的二叉搜索树(查找树)和最小堆,下面哪个说法是不正确的:

\textbf{A}.二叉搜索树(查找树)高度大于等于最小堆高度

\textbf{B}.对该二叉搜索树(查找树)进行中序遍历可得到从小到大的序列

\textbf{C}.从最小堆根结点到其任何叶结点的路径上的结点值构成从小到大的序列

\textbf{D}.对该最小堆进行按层序(level order)遍历可得到从小到大的序列

答案区

题目答案
习题一C
习题二B
习题三D

解析区

习题一

 

习题一就是一道简单的考察最小堆定义的题目,我们把数组转化成完全二叉树的形式来看,很快就可以得出答案:        

 

 

故而最终选择的是C选项。 

习题二

 

习题二考察堆的插入操作。

我们先把这个最大堆画出来: 

插入结点83:

 

然后进行调整:

 

故而就可以得到插入结点83之后的堆了,选B选项。 

习题三

。 

习题三考察的是对二叉搜索树和最小堆两个结构的理解和简单应用。

  • A选项,二叉搜索树高度大于等于最小堆高度。

在二叉搜索树中,每个结点的值都大于其左子树中的所有结点的值,小于其右子树中的所有结点的值。所以,二叉搜索树的高度取决于结点在树中的排列方式。

如果考虑最好的情况,二叉搜索树的排列方式完全平衡,即为一颗平衡二叉树,那么它的高度就为{log_{2}}^{N}。如果考虑最坏的情况,二叉搜索树的排列方式呈现为斜二叉树,那么它的高度就为\textbf{N}。(N为结点数)

相比之下,最小堆是一种完全二叉树,其中每个结点的值都小于或等于其子结点的值。

因此,最小堆的高度取决于结点数,而不是结点排列方式。具体来说,最小堆的高度为{log_{2}}^{N}。(N为结点数)

所以一般情况下,二叉搜索树的高度是大于等于最小堆的高度的。

A选项正确。

  • B选项,对该二叉搜索树(查找树)进行中序遍历可得到从小到大的序列。

 前面我们讲过了,在二叉搜索树中,每个结点的值都大于其左子树中的所有结点的值,小于其右子树中的所有结点的值。

而中序遍历的顺序是先左子树->根节点->右子树,因此中序遍历得到的序列是从小到大排列的。

B选项正确。

  • C选项,从最小堆根结点到其任何叶结点的路径上的结点值构成从小到大的序列。

这句话就是堆的性质,是最小堆的有序性,在“什么是堆”中就已经学习过。

C选项正确。

  • D选项,对该最小堆进行按层序(level order)遍历可得到从小到大的序列

对于最小堆而言,每个结点的值都小于等于其子结点的值。

而层序遍历是从根结点开始,先遍历根结点,然后按照从上到下、从左到右的顺序依次遍历每一层的结点。很显然,这样遍历一个堆是不一定能拿到一个从小到大的序列的。

例如习题一的C选项:

它为最小堆,但是按层序遍历得到的序列为:2,28,52,72,55,98,71。

并不是从小到大的。

因为最小堆的性质只保证了每个结点的值都小于等于其子结点的值,但并没有保证同一层结点之间的大小关系。

因此,按层序遍历得到的序列可能存在某些结点之间的大小关系不符合从小到大的顺序。

故而,D选项错误。

综上,习题三选择的是不正确的选项,即D选项。

 


end 


学习自:MOOC数据结构——陈越、何钦铭 

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

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

相关文章

排序(数据结构系列13)

目录 前言: 排序算法的引言: 1.插入排序 1.1直接插入排序 1.2希尔排序 2.选择排序 2.1直接选择排序 2.2堆排序 3.交换排序 3.1冒泡排序 3.2快速排序 3.2.1Hoare版 3.2.2挖坑法 3.2.3前后指针法 4.归并排序 5.排序总结 结束语: 前言&…

docker容器日常操作命令

1.docker日常命令 文章目录 1.docker日常命令1.1.运行一个容器(run)1.1.1.创建contos 7.6容器 1.2.查询容器列表(ps)1.3.容器命名(--name)1.4.容器删除命令(rm)1.5.容器命令(inspect&#xff09…

【Vue2.0源码学习】变化侦测篇-Array的变化侦测

文章目录 1. 前言2. 在哪里收集依赖3. 使Array型数据可观测3.1 思路分析3.2 数组方法拦截器3.3 使用拦截器 4. 再谈依赖收集4.1 把依赖收集到哪里4.2 如何收集依赖4.3 如何通知依赖 5. 深度侦测6. 数组新增元素的侦测7. 不足之处8. 总结 1. 前言 上一篇文章中我们介绍了Object…

5 大分区管理器 - 最好的硬盘分区软件

分区是一个计算机术语,指的是在硬盘上创建多个区域,以允许操作系统和分区管理器软件有效且单独地管理每个区域中的信息。拥有大量计算机使用历史的人最有可能受益于多个分区。在硬盘中进行分区的好处之一是可以更轻松地将操作系统和程序文件与用户文件分…

node.js (fs文件系统模块,path路径模块,http模块web服务器)

node.js是js的后端运行环境 浏览器是js的前端运行环境 node.js是无法调用DOM和BOM和ajax等浏览器内置API node.js是一个基于ChromeV8引擎的JavaScript运行环境 目录 node.js可以做什么? node.js的学习路径 node安装 在node.js环境中执行javaScript代码 fs文…

Flask搭建api服务-生成API文档(Taobao/jd/1688API 调用文档说明)

API是给别人用的,就要告诉别人如何发现api,以及api的用途、名称、出参、入参,生成api文档的做法有好多种,本文选了一种最简单的方式。 核心就是通过app.view_functions 这个字典找到每个API 的endpoint所绑定的方法,然…

flutter的环境搭建步骤(MacBook Pro)

1.下载Flutter SDK包 地址:https://docs.flutter.dev/get-started/install/macos 2.配置环境变量 vim ~/.bash_profile //在打开的文件里增加一行代码,意思是配置flutter命令在任何地方都可以使用。 export PATH/app/flutter/bin:$PATH // 从新加载 sou…

JS 实现区块链同步和共识

JS 实现区块链同步和共识 之前实现了区块链和去中心化网络,这里实现区块链的同步和共识,不过本质上来说使用的的方法和 register & broadcast 的方法是一样的。 这个也是目前学习中倒数第二篇笔记了,最后两个部分学完,block…

机器视觉之线缆字符检测

在生活当中,随处可见与印刷字符有关的产品,比如:线缆上字符,键盘上的字符,衣物上的标签字符,电器上的字符等等。 而这些产品的外观由于字符在印刷时产生的一些瑕疵,如字符拉丝、移位、多墨、缺失…

身为管理层总是被下属怼,自己毫无威严,如何改变这样的现状?

身为一名管理层,被下属怼的感觉无疑是相当不爽的。毕竟,作为领导者,我们希望能够得到下属的尊重和信任,而不是被他们视为“摆设”。如果你也有类似的经历,那么不妨试试以下几种方法,来改变这种局面。 首先…

C++ Qt5.9学习笔记-事件1.5W字总结

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

物业管理系统【纯控制台】(Java课设)

系统类型 纯控制台类型(没有用到数据库) 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Idea或eclipse 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87753361 更多系统…

YOLOv5结合BiFPN:BiFPN网络结构调整,BiFPN训练模型训练技巧

目录 一、BiFPN网络结构调整1、堆叠BiFPN2、调整网络深度3、调整BiFPN的参数 二、训练技巧和注意事项1、数据增强2、学习率调度3、优化器选择4、权重初始化5、模型选择6、Batch size的选择7、模型保存和加载8、注意过拟合和欠拟合问题 三、实验结果和分析1、数据集和评估指标2、…

开发、部署应用程序APP的【12要素原则】你顺便了解一下?

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 开发、部署应用程序APP的【12要素原则】你顺便了解一下? ☘️摘要☘️介绍☘️背景☘️谁应该阅读这份文件?☘️十二要素原则🌿I. 代码库 Codebase&#x1f…

2.进程与线程

2.进程与线程 2.1 进程与线程 进程: 程序由指令和数据组成,指令要执行,数据要读写,就需要将指令加载到cpu,数据加载到内存,进程就是用来加载指令、管理IO、管理内存的当一个程序被执行,从磁盘…

大数据环境准备(二) - VMware 虚拟机系统设置

VMware 虚拟机系统设置 1.对三台虚拟机完成主机名、固定IP、SSH免密登录等系统设置 1)配置固定IP地址 开启node1,修改主机名为node1 #切换root用户 su - #修改主机名 hostnamectl set-hostname node1关闭node1终端,重新打开; 同理开启nod…

Java页面布局

Java页面常用的布局主要有五种:FlowLayout、BorderLayout、GridLayout、CardLayout和NULL 1、FlowLayout 称为“流布局”,将组件按从左到右顺序、流动的安排到容器中,直到占满上方的空间时、则向下移动一行,Flow Layout是面板的…

13.多线程

1.实现多线程 1.1简单了解多线程【理解】 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 1.2并发和并行【理解】 并行:在同一时刻,有多个指令在多个CPU上…

Packet Tracer - 配置 IPv6 ACL

Packet Tracer - 配置 IPv6 ACL 拓扑图 地址分配表 设备 接口 IPv6 地址/前缀 默认网关 服务器 3 NIC 2001:DB8:1:30::30/64 FE80::30 目标 第 1 部分:配置、应用并验证一个 IPv6 ACL 第 2 部分:配置、应用并验证第二个 IPv6 ACL 第 1 部分…

node.js+vue鲜花销售网站

后台模块设计: ①用户管理功能。管理员在后台首页点击用户管理就会进入用户列表页面,系统会将数据库中的用户信息以列表的形式显示出来,管理员可以在这个页面进行用户的更新和删除操作,系统可以将最新更新的信息重新写入用户表中并…