【数据结构】——树的相关习题

news2024/11/27 13:45:01

目录

  • 一、选择填空判断题
    • 题1
    • 题2
    • 题3
    • 题4
    • 题5
    • 题6
    • 题7
    • 题8
    • 题9
  • 二、应用题
    • 题10(遍历序列)
    • 题11(存储结构)
    • 题12 13(二叉树/树、森林之间的转换)
    • 题14(线索二叉树)

一、选择填空判断题

题1

1、设高度为h的二叉树上只有度为0和度为2的结点,则该二叉树中所包含的结点数至少为(),最多为()。
A、h ;2h-1
B、2h-1 ; 2h-1
C、2h+1; 2h-1-1
D、h+1;2h-1

解析:(B)
最少的情况下,除了根结点该层为1个结点以外,其余h-1层都有2个结点,得2(h-1),即2(h-1)+1=2h-1。
最多的情况下,除了最后一层度为0,其余结点都是度为2的结点,即 2h-1个。

题2

2、一棵有124个叶结点的完全二叉树,最多有( )个结点。
A、247
B、248
C、249
D、250

解析:(B)
由于n0=n2+1,且N=n0+n1+n2,度为0和度为1的结点相差为1,所以完全二叉树中度为1的结点n1只可能是0或1,即当总结点数为偶数时n1=1,为奇数时n0=0。
本题中,n0=124,可得n2=123,由于是考虑最多结点数,即n1=1,所以N=124+123+1=248。

题3

3、若一棵二叉树有126个结点,在第7层(根结点在第1层)至多有()个结点。
A、32
B、64
C、63
D、不存在第7层

解析:(C)
考虑第1层到第6层结点都是满的情况,即第1层到第6层结点的结点数量为1+2+4+8+16+32=63个。第7层最多可有64个结点,由于二叉树有126个结点,即第7层还有126-63=63个结点。

题4

4 、一棵有n个结点的二叉树采用二次链表存储结点,其中非空指针数为(),空指针数为()。
A、n+1;n-1
B、n;n-1
C、n-1;n+1
D、2n;2n-1

解析:(A)
n个结点的数有n-1条分支,每个分支对应一个指针,所以非空指针数为n-1;另外,由于每个结点中包含2个指针域(左指针域lchild、右指针域rchild),总指针域数量减去非空指针数即为空指针数,2n-(n-1)=n+1。

题5

5、在二叉树的前序序列、中序序列和后序序列中,所有叶子结点的先后顺序是()。
A、都不相同
B、完全相同
C、前序序列和中序序列相同,与后序序列不同
D、中序序列和后序序列相同,与前序序列不同

解析:(B)
三种遍历方式中,访问左右子树的顺序是相同的,只是访问根结点的先后顺序不同,故所有叶子结点的先后顺序是相同的。

题6

6、线索二叉树是一种()结构。
A、逻辑
B、逻辑和存储
C、物理
D、线性

解析:(C)
二叉树是一种逻辑结构,而线索二叉树是加上线索的链表结构,是一种物理结构。

题7

7、在有n个叶子结点的哈夫曼树中,非叶子结点的总数是();若该哈夫曼树有215个结点,对其进行哈夫曼编码,可以得到()个不同的码字。
A、n-1;108
B、n;107
C、2n-1;214
D、2n;215

解析:(A)
哈夫曼树中只有度为0和2的结点,由n0=n2+1,可得:非叶子结点的总数为n-1。
结点总数N=n0+n2,且n0=n2+1,N=215代入可得,n0=108。

题8

8、找出下列条件的二叉树:
A、先序遍历序列与后序遍历序列相同,为()
B、中序遍历序列与后序遍历序列相同,为()
C、先序遍历序列与中序遍历序列相同,为()
D、中序遍历序列与层次遍历序列相同,为()

解析:
A、空树或只有根结点的二叉树;
B、空树或任一结点至多只有左子树;
C、空树或任一结点至多只有右子树;
D、空树或任一结点至多只有右子树。

题9

9、(判断)哈夫曼编码树中,两个频率相同的字符具有相同的哈夫曼编码。

解析:(×)
不会有相同的哈夫曼编码,除非它们的字符相同,从而得到的哈夫曼编码也相同。

二、应用题

题10(遍历序列)

题型通过已知树的遍历序列,求其他遍历序列

10、某二叉树的中序遍历序列为ABCDEFG,后序遍历序列为BDCAFGE,求其先序遍历序列。

解:可知,二叉树的先、中、后序遍历序列以及层次遍历序列的遍历顺序如下:

遍历名称遍历规则
先序遍历序列根 > 左 > 右
中序遍历序列左 > 根 > 右
后序遍历序列左 > 右 > 根
层次遍历序列左 > 右

首先,通过所给的两个序列恢复二叉树,后序遍历序列为BDCAFGE,所以该序列的最后一个元素“E”为二叉树的根结点,从而可得到:
在这里插入图片描述
继续对左子树和右子树的中序遍历和后序遍历进行拆分,先看E的左子树,由后序序列可知左子树中A为根结点,且由后序序列可知A无左子树,右子树为BCD;同理,E的右子树中,右子树中G为根结点,但是无法判断F为其左子树还是右子树,所以看中序遍历序列中,G的左边是F,由中序遍历规则,所以F为G的左子树,同时G无右子树,如下:
在这里插入图片描述
同上,可得C为根结点A的右子树,C的左子树为B,右子树为D,如下既是一棵完整的二叉树:
在这里插入图片描述
故可得其先序遍历序列:EACBDGF。

题11(存储结构)

题型根据树的存储结构,画出二叉树

11、下图是一个二叉树的顺序存储结构,其中空白表示该结点不存在,画出该二叉树,并求出该二叉树的中序序列和后序序列。

在这里插入图片描述
解:按完全二叉树存储,其中空白的为空,如下:
在这里插入图片描述
注:其中黑色标注只是为了更清楚展示该二叉树,二叉树建议只留蓝色部分即可。
中序序列:BADCFE;后序序列:BDFECA。

题12 13(二叉树/树、森林之间的转换)

题型一根据所给二叉树,将其转换为树

12、将以下这棵二叉树转换为树。

在这里插入图片描述
解:第一步,旋转。将该二叉树中除了根结点左右子树的所有结点向右旋转45°,如下:
在这里插入图片描述
第二步,连线。若某结点的左孩子有右子树,则右子树与该结点相连,A结点的左孩子B有右子树D,所以将A与D相连;C结点的左孩子E有右子树H,所以将C与H相连,如下:
在这里插入图片描述
第三步,断线。删除除根结点外各结点右子树的右分支与其父结点连线,如下:
在这里插入图片描述
即可得到二叉树转换而来的树:
在这里插入图片描述
题型二根据所给森林,将其转换为二叉树

13、已知下面由三棵树组成的森林,将其转换为二叉树。

在这里插入图片描述
解:第一步,连线。首先将所有结点的兄弟结点相连,另外各树的根结点也相连,如下:
在这里插入图片描述
第二步,断线。只保留所有结点的最左边子女,而其他结点断开,如下:
在这里插入图片描述
断开后:
在这里插入图片描述
第三步,旋转。以第一棵树的根结点为轴心,顺时针旋转45°,如下:
在这里插入图片描述

题14(线索二叉树)

题型根据所给二叉树,画出该二叉树的线索二叉树

14、设一棵二叉树的先序、中序遍历序列分别为ABDFCEGH和BFDAGEHC,求这棵二叉树的后序线索树。

解:首先,求出该二叉树,可以得到:
在这里插入图片描述
第一步,求出要画的相应线索二叉树的先/中后序遍历序列。可得到其后序遍历序列是FDBGHECA。
第二步,画线索(针对二叉树中缺少左、右孩子的结点)。若该结点无左孩子,则线索指向相应线索二叉树的先/中/后序遍历序列的前驱,若无前驱则指向NULL;若该结点无右孩子,则线索指向相应线索二叉树的先/中/后序遍历序列的后继,若无后继则指向NULL。
例如,结点D无右孩子,在后序遍历序列中结点D的后继是B,所以指向B;结点F无左孩子,在后序遍历序列中结点F无前驱结点,所以指向NULL;结点H无左孩子和右孩子,在后序遍历序列中结点H的前驱是G,后驱是E,所以分别指向G和E,如下:
在这里插入图片描述

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

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

相关文章

Java的包装类(装箱和拆箱面试题)

1.为什么要有包装类(或封装类) 为了使基本数据类型的变量具有类的特征,引入包装类。 2.基本数据类型与对应的包装类: 3.装箱和拆箱 基本数据类型包装成 包装类的实例—装箱 通过包装类的构造器实现: int i 500; Integer t ne…

案例34:基于Springboot在线互动学习网站开题报告设计

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

深度学习笔记之Seq2Seq(一)基本介绍

深度学习笔记之Seq2seq——基本介绍 引言回顾:经典循环神经网络结构关于循环神经网络的更多引用 Seq2seq \text{Seq2seq} Seq2seq网络结构 Seq2seq \text{Seq2seq} Seq2seq结构描述 引言 从本节开始,将介绍 Seq2seq \text{Seq2seq} Seq2seq。 回顾&…

苏轼人生历程不同时期作品

大文豪苏轼才华横溢,一生却屡经贬谪,四处漂泊。但好在他生性豁达,为人率真,又深得道家思想精髓,所以他不仅没有为不幸的遭遇所折服,反而活出了别样的潇洒与风采。也正因如此,他的诗词、他的性情…

人脸融合相关调研

以前的记录,整理发现了值得分享一下。 云解决方案 腾讯: https://ai.qq.com/product/facemerge.shtmlFace: https://www.faceplusplus.com.cn/face-merging/Baidu:https://ai.baidu.com/tech/face/merge 自研 纯Opencv实现,基于…

由世纪互联运营的Microsoft Teams携创新功能正式发布,助力合作伙伴生态共赢

2023年4月18日,北京——由世纪互联运营的Microsoft Teams推出一系列创新功能,围绕企业数字核心能力,赋能数字化协作空间、智能化协作体验、整合生产力工具和工作流、安全合规、构建团队文化等五大落地场景,这将进一步帮助中国市场…

【unity造轮子】最简单的双向可穿越平台制作(Platform Effector 2D的使用)

文章目录 先看最终效果2D平台效应器(Platform Effector 2D)1. 这里简单解释一下2.一些常见的效果包括:3.Platform Effector 2D具有各种属性,使我们可以控制它的行为。这些属性包括: 可向上穿越的平台向下穿越的平台最终…

代码随想录算法训练营第一天| 704.二分查找、27.移除元素

LeetCode704.二分查找 链接:(704.二分查找) 题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 题目就…

远程服务调用的简单应用,并轻松解决LinkedHashMap无法转成相关实体类的问题

🏀(一)为啥需要远程服务调用? 🐠知其然还要知其所以然,在我们的生产项目上一般而言会部署多个微服务,每个微服务会负责不同版块的业务工作。如果某个微服务需要借助另外的某些微服务中的接口才能…

尚硅谷甄选

搭建后台管理系统模板 项目初始化 今天来带大家从0开始搭建一个vue3版本的后台管理系统。一个项目要有统一的规范,需要使用eslintstylelintprettier来对我们的代码质量做检测和修复,需要使用husky来做commit拦截,需要使用commitlint来统一提…

tb6612电机驱动与JGB37-520减速直流电机

tb6612电机驱动与JGB37-520减速直流电机 文章目录 tb6612电机驱动与JGB37-520减速直流电机电机驱动模块TB6612TB6612的引脚说明真值表(直流电机的驱动状态)TB6612的正转反转原理 直流电机原理减速器编码器一、关于编码器的介绍二、编码器的工作原理&…

Linux:DHCP服务

我的DHCP服务器 是 centos7 使用的yum安装DHCP服务(如果不会搭建yum库可以查看) Linux:rpm查询安装 && yum安装_鲍海超-GNUBHCkalitarro的博客-CSDN博客 我的环境为: 两台centos7一台win10 第一台centos7 为 DHCP服务器…

【Python 私有变量和私有方法】零基础也能轻松掌握的学习路线与参考资料

Python是一种面向对象的编程语言。在Python类中,私有变量和私有方法是常见的概念。私有变量和私有方法是指只能在类内部访问的变量和方法。在本文中,我们将介绍Python私有变量和私有方法的学习路线,并给出参考资料和优秀实践。 学习Python面…

【MySQL数据库 | 第七篇】图形化界面工具DataGrip基础应用教学

目录 前言: DataGrip安装界面: 利用DataGrip创建数据库: 利用DataGrip为数据库创建表: 利用datagrip修改表: 添加元素: 结束! 前言: 在之前我们一直接触的是MySQL命令行语句开…

macOS Sonoma 14beta With OpenCore 0.9.3 and winPE双引导分区黑苹果原版镜像

镜像特点(原文地址:http://www.imacosx.cn/113888.html) 完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要…

RL - 强化学习 马尔可夫决策过程 (MDP) 转换 马尔可夫奖励过程 (MRP)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131097165 马尔可夫决策过程(Markov Decision Process,MDP)和马尔可夫奖励过程(Markov R…

FluxMQ 规则引擎 《一》

规则引擎介绍 演示环境 http://demo.fluxmq.com:50000/ 账号:fluxmq密码:fluxmq 简介 FluxMQ Rule Engine (以下简称规则引擎) 用于配置FluxMQ 消息流与设备事件的处理、响应规则。规则引擎不仅提供了清晰、灵活的 “配置式” 的业务集成方案&#xff0…

(二)CSharp-关于内存分配的总结和疑惑(未解决)

同时看了好几本书,对变量的内存分配概念总是稀里糊涂的。所以干脆专门写一篇文章来对C#内存分配进行研究和总结。 1、值类型和引用类型 对值类型: 值类型实例通常存在线程的堆栈里。即所有值类型的非成员数据都放在线程的堆栈里。如果值类型是类的数据…

4.使用Express跨域资源共享(继上一章)

4.5、CORS跨域资源共享 1.接口的跨域问题 刚才编写的GET和POST接口,存在一个很严重的问题:不支持跨域请求。 解决接口跨域问题的方案主要有两种: ①CORS(主流的解决方案,推荐使用) ②JSONP&#xff08…

Windows软件架构概念

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来聊聊Windows软件架构的概念。 Shaw和Garlan在他们划时代的著作中以如下方式讨论了软件的体系结构:从第一个程序被划分成模块开始,软件系统就有了体系结构。现在&#xff0c…