数据结构:选择题+编程题(每日一练)

news2024/10/3 8:27:49

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:单值二叉树

思路一:

题二:二叉树的最大深度

思路一:

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!


选择题:

题一:

1.一颗拥有1000个结点的树度为4,则它的最小深度是( )

A.5

B.6

C.7

D.8

答案解析:

        如果这棵树每一层都是满的,则它的深度最小,假设它为一个四叉树,高度为h,则这个数的节点个数为(4^h - 1) / 3,当h = 5, 最大节点数为341, 当h = 6, 最大节点数为1365,所以最小深度应该为6。

题二:

2.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为( )个

A.11

B.12​

C.13

D.14

答案解析:        

        设Ni表示度为i的节点个数,则节点总数 N = N0 + N1 + N2

        节点个数于节点边的关系: N个节点的树有N-1个边

        边与度的关系:N - 1 = N1 + 2 * N2

        故:N0 + N1 + N2 - 1 = N1 + 2 * N2

        因此,得:N0 = N2 + 1

        回到原题,N0 = 3,N1 = 8,可得N2 = 2。

        因此答案是 3 + 8 + 2 = 13。

题三:

3.在一颗度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,则叶子结点有( )个

A.4

B.5

C.6

D.7

答案解析:        

        设度为i的节点个数为ni, 该树总共有n个节点,则n=n0+n1+n2+n3. 

        有n个节点的树的总边数为n-1条.

        根据度的定义,总边数与度之间的关系为:n-1=0*n0+1*n1+2*n2+3*n3.

        联立两个方程求解,可以得到n0 = n2 + 2n3 + 1,  n0=6

题四:

4.下列关于二叉树的叙述错误的是( )

A.二叉树指的是深度为 2 的树

B.一个 n 个结点的二叉树将拥有 n-1 条边

C.一颗深度为 h 的满二叉树拥有 2^h-1 个结点(根结点深度为1)

D.二叉树有二叉链和三叉链两种表示方式

答案解析:     

        A错误: 二叉树指最大孩子个数为2,即树的度为二的树。深度描述的为树的层数。

        B正确: 对于任意的树都满足:边的条数比节点个数少1,因为每个节点都有双亲,但是根节点没有

        C正确: 正确,参加二叉树性质

        D正确: 二叉链一般指孩子表示法,三叉连指孩子双亲表示法,这两种方式是二叉树最常见的表示方式,虽然还有孩子兄弟表示法,该中表示方式本质也是二叉链

题五:

5.下列关于堆的叙述错误的是( )

A.堆是一种完全二叉树

B.堆通常使用顺序表存储

C.小堆指的是左右孩子结点都比根结点小的堆

D.堆的删除是将尾部结点放到队顶后执行向下调整算法

答案解析:

        堆是在完全二叉树的基础上进行了条件的限制,即:每个节点都比其孩子节点大,则为大堆;每个节点都比其孩子节点小则为小堆完全二叉树比较适合使用顺序结构存储。

堆删除:删的是堆顶元素,常见操作是将堆顶元素与堆中最后一个元素交换,然后对中元素个数减少一个,重新将堆顶元素往下调整故C错误

编程题:

题一:单值二叉树

965. 单值二叉树 - 力扣(LeetCode)

思路一:

        对整棵二叉树进行遍历比较!!!

        第一步:优先判断树是否为空,空树为真;

        第二步:判断左树是否存在且左树值等于根值,然后再判断右树存在且右树值等于根值;

        第三步:最后,以当前为节点遍历左子树和右子树。

bool isUnivalTree(struct TreeNode* root)
{
    //判断子树是否为空
    if(root == NULL)
        return true;
    //左树存在且左树值等于根值
    if(root->left && root->left->val != root->val)
        return false;
    //右树存在且右树值等于根值
    if(root->right && root->right->val != root->val)
        return false;
    //递归判断子树值是否都相等
    return isUnivalTree(root->left) && isUnivalTree(root->right);
}

题二:二叉树的最大深度

104. 二叉树的最大深度 - 力扣(LeetCode)

思路一:

        第一步:判断树是否为空,为空返回0;

        第二步:定义一个leftdeep:记录除根层以外左子树层数;定义一个rightdeep:记录除根层以右左子树层数;

        第三步:当遍历到树的子节点 返回值最大的值+1(加上当前层).

int maxDepth(struct TreeNode* root)
{   
    if(root == NULL)
        return 0;

    //记录除根层以外左子树层数
    int leftdeep = maxDepth(root->left);
    //记录除根层以外右子树层数
    int rightdeep = maxDepth(root->right);

    
    return leftdeep > rightdeep ? leftdeep+1 : rightdeep+1;
}

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!

                                              

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

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

相关文章

缺少win32spl.dll文件? 教你快速修复win32spl.dll

缺少win32spl.dll文件?不要怕,其实这个问题还是比较好解决的,我们今天会给大家介绍多种的解决方法,让你花式去解决缺少win32spl.dll的问题,好了,废话不多少,我们一起进入正题吧。 一.介绍win32s…

在docker环境下从头搭建openvslam/orb_slam3的流程记录以及问题总结

文章目录 0. 前言1. MobaXterm软件2. docker操作2.1. 拉一个ubuntu镜像2.2. 修改名字(可选)2.3. 删除之前的docker镜像(可选) 3. openvslam搭建流程3.1. 起容器3.2. 前置包的安装3.3. 安装Eigen3.4. 安装opencv3.5. 安装DBoW23.6.…

uCOSIII实时操作系统 十一 消息传递

目录 消息队列: 消息列队相关的API函数 创建消息队列: 等待消息列队: 向消息列队发送消息: 消息队列实验 任务内嵌消息队列: 任务内建消息队列的API函数 等待任务内建消息: 发送任务内建消息&…

Python-pptx教程之一从零开始生成PPT文件

简介 python-pptx是一个用于创建、读取和更新PowerPoint(.pptx)文件的python库。 典型的用途是根据动态内容(如数据库查询、分析数据等),将这些内容自动化生成PowerPoint演示文稿,将数据可视化&#xff0c…

ES6初步了解生成器

生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同 语法: function * fun(){ } function * gen(){console.log("hello generator");}let iterator gen()console.log(iterator)打印: 我们发现没有打印”hello…

计算机组成原理(一目了然的顶级总纲)(持续更新!)

文章目录 886冯诺依曼计算机计算机的五大部件(又称五大字系统)细化的计算机组成框图存储器 886 计算机系统由“硬件”和“软件”两大部分组成。 计算机的软件通常又可以分为两大类:系统软件和应用软件。 冯诺依曼计算机 数学家冯诺依曼&am…

MySQL数据库增删改查

删除表 drop table 表名; drop table if exists 表名;修改表 修改表名 alter table 表名 rename to 新表名;添加列 alter table 表名 add 列名 数据类型;删除列 alter table 表名 drop 列名;修改数据类型 alter …

WorkPlus专注私有化部署,为企业安全打造超级沟通协作APP

在如今全球化竞争和高速发展的商业环境中,企业内部的沟通和协作至关重要。面对众多的通讯和协作平台,WorkPlus独辟蹊径,专注私有化部署,致力于为企业打造安全专属、自主可控的超级沟通协作APP。正是这一专注与创新,让W…

发表《Nature》!哈佛大学团队成功研发自纠错量子计算机

(图片来源:网络) 量子计算机能达到当今最快的超级计算机也无法达到的速度和效率。然而,该技术尚未大规模推广和商业化,很大程度上是因为它无法自我纠错。与经典计算机不同,量子计算机无法通过一遍又一遍地…

双赢!企业咨询行业和低代码工具的破局之路

对于传统咨询企业来说,主要专注于流程和功能方面的咨询,在信息化时代中,以流程和业务驱动的模式为基础进行战略咨询、管理咨询和业务咨询,作为传统企业的外脑,在大数据时代,咨询行业在数智化时代如何应对自…

发表《数学》期刊!西班牙研究人员成功应用量子计算模型来预测多种疾病

Jos Luis Salmern 将量子计算应用于医疗保健领域(图片来源:网络) 谷歌量子人工智能(AI)研究小组的Sergio Boixo表示,量子计算还处于起步阶段,虽然很难预测其未来,但该技术已取得了一…

lvs+keepalived: 高可用集群

lvskeepalived: 高可用集群 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,于是keepalived软件。实现的是调度器的高可用。 但是:keepalived不是专门为集群服务的,也可以做其他服务器的高可用。 lvs的高可用集群&#xf…

第九章 无线网络和移动网络 | 计算机网络(谢希仁 第八版)

文章目录 第九章 无线网络和移动网络9.1 无线局域网WLAN9.1.1 无线局域网的组成9.1.2 802.11局域网的物理层9.1.3 802.11局域网的MAC层协议9.1.4 802.11局域网的MAC帧 9.2 无线个人区域网WPAN9.3 无线城域网WMAN9.4 蜂窝移动通信网9.4.1 蜂窝无线通信技术简介9.4.2 移动IP9.4.3…

1. 概述

1.概述 1.1 信息时代的计算机网络 1.1.1 计算机网络的各类应用 1.1.2 计算机网络带来的负面问题 1.2 因特网概述 1.2.1 网络、互联网与因特网的区别与关系 若干个节点(Node)和链路(Link)互连形成了网络(Network&…

Flask后端开发(一)-基础知识和前期准备

目录 1.背景介绍1.1. 项目背景1.2. 项目难点1.3. 项目环境 2. flask后端开发实现的功能3. flask部署和前后端对接3.1. flask运行配置和服务器部署3.2. flask前后端传参 4. 后端测试工具4.1. 工具介绍4.2. 工具使用 后记 1.背景介绍 1.1. 项目背景 就是前几个月临时接手了一个…

Linux基础命令4——Linux快捷键与帮助命令

目录 Linux快捷键 Linux常用帮助命令 help命令——只适用于于内置命令 --help命令——只适用于外置命令 内外部都可使用的帮助命令 man命令 info命令 Linux快捷键 ctrlshift加号 放大屏幕 ctrl减号 缩小屏幕 ctrl l …

28、Flink 的SQL之DROP 、ALTER 、INSERT 、ANALYZE 语句

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

中国技术的对外输出:Telegram也开始搞小程序应用了

Telegram 宣布为其开发者提供了一项“能够在其中运行迷你应用”的新功能( 迷你应用即 Mini App,下文中以“小程序”代替)。 在 Telegram 的博客中,开发人员介绍可以使用 JavaScript 构建自己的迷你应用 在一篇博客文章中&#xf…

蓝桥杯 Java 青蛙过河

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改/**二分法从大(n)到小找足够小的步长前缀和记录每个位置的前面有的总石头数(一个石头表示可以容纳一个青蛙,一位置有多少个石头hi就是多少)&…

2023/10/24 MySQL学习

列表查询 in的用法,括号里面跟的应该是具体值,可填多个 select 表中变量名 from 表名 where 变量名 like ___... 一个下划线代表一个字符,多个就是多个字符 %号是任意多字符 %号的用法 %任意字符串 代表查找以这个字符串结尾的变量名 %任意字符串% 查找以这个字符串在变…