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

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:单值二叉树

思路一:

题二:二叉树的最大深度

思路一:

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

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


选择题:

题一:

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.rhkb.cn/news/169430.html

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

相关文章

KekeBlog项目实战后台模块(二)(已完结)

十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…

【QT开发(10)】QT 进程

文章目录 1.1 运行一个新进程1.2 QProcess 还可以对一些信号进行关联2 进程间通信2.1 使用共享内存实现进程通信2.2 演示 代码仓库参考 1.1 运行一个新进程 使用类 QProcess,允许将一个进程堪称一个顺序IO设备。 在Qt中,QProcess类是用于启动外部进程的…

Vue的MVVM实现原理

目录 前言 用法 代码和效果图 效果图 理解 高质量的使用 前言 MVVM是Model-View-ViewModel的缩写,是一种软件架构设计模式。Vue.js实现了这种设计模式,通过双向数据绑定和虚拟DOM技术,使得数据和视图能够快速响应彼此的变化。了解Vue的…

unity中方向的两种表示:欧拉角和四元数

欧拉角:简单来说就是你可以选择 0度~360度 的范围 四元数:在计算机图像学中,四元数用于物体的旋转,是一种复杂,但效率较高的旋转方式 Quaternion结构体代表一个四元数,包含一个标量和一个三维向量&#x…

C# Onnx Yolov8 Detect 路面坑洼检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…

leetcode 105. 从前序与中序遍历序列构造二叉树

2023.10.21 本题需要根据前序遍历序列和中序遍历序列来构造出一颗二叉树。类似于从中序与后序遍历序列构造二叉树 。使用递归, java代码如下: /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* …

Monocular arbitrary moving object discovery and segmentation 论文阅读

基本信息 题目:Monocular Arbitrary Moving Object Discovery and Segmentation 作者: 来源:BMVC 时间:2021 代码地址:https://github.com/michalneoral/Raptor Abstract 我们提出了一种发现和分割场景中独立移动的…

VSCode 自动格式化

1.打开应用商店,搜索 prettier code formatter ,选择第一个,点击安装。 2.安装完成后,点击文件,选择首选项,选择设置。 3.在搜索框内输入 save ,勾选在保存时格式化文件。 4.随便打开一个文件&a…

nginx配置负载均衡--实战项目(适用于轮询、加权轮询、ip_hash)

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

021-Qt 配置GitHub Copilot

Qt 配置GitHub Copilot 文章目录 Qt 配置GitHub Copilot项目介绍 GitHub Copilot配置 GitHub CopilotQt 前置条件升级QtGitHub Copilot 前置条件激活的了GitHub Copilot账号安装 Neovim 启用插件,重启Qt配置 GitHub Copilo安装Nodejs下载[copilot.vim](https://gith…

http post协议实现简单的rpc协议,WireShark抓包分析

文章目录 1.http 客户端-RPC客户端1.http 服务端-RPC服务端3.WireShark抓包分析3.1客户端到服务端的HTTP/JSON报文3.2服务端到客户端的HTTP/JSON报文 1.http 客户端-RPC客户端 import json import requests# 定义 RPC 客户端类 class RPCClient:def __init__(self, server_url…

基于多尺度分形残差注意力网络的超分辨率重建算法

1.引言 深度神经网络可以显著提高超分辨率的质量,但现有方法难以充分利用低分辨率尺度特征和通道信息,从而阻碍了卷积神经网络的表达能力。针对此类问题,本章提出了一种多尺度分形残差注意力网络(Multi-scale Fractal Residual A…

Java NIO

Java NIO 一,介绍 Java NIO(New IO)是 JDK 1.4 引入的一组新的 I/O API,用于支持非阻塞式 I/O 操作。相比传统的 Java IO API,NIO 提供了更快、更灵活的 I/O 操作方式,可以用于构建高性能网络应用程序。 …

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全

本心、输入输出、结果 文章目录 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全前言Linux 文件系统解释应该知道的 18 个最常用的 Linux 命令HTTPS如何工作?数据是如何加密和解密的?为什么HTTPS在数据传输过程中会…

领导:给你一个项目,如何开展性能测试工作。我:***

01 怎么开展性能测试 01 测试的一般步骤 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的,在功能还不够完备的情况下没有多大的意义(后期功能完善上会对系统的性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资源…

ESRI ArcGIS Desktop 10.8.2图文安装教程及下载

ArcGIS 是由美国著名的地理信息系统公司 Esri 开发的一款地理信息系统软件,它是目前全球最流行的 GIS 软件之一。ArcGIS 提供了图形化用户界面和数据分析工具,可以帮助用户管理、分析和可视化各种空间数据。ArcGIS Desktop是一个完整的桌面GIS软件套件&a…

20231024后端研发面经整理

1.如何在单链表O(1)删除节点? 狸猫换太子 2.redis中的key如何找到对应的内存位置? 哈希碰撞的话用链表存 3.线性探测哈希法的插入,查找和删除 插入:一个个挨着后面找,知道有空位 查找:一个个挨着后面找…

Ai写作创作系统ChatGPT网站源码+图文搭建教程+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

记一次渗透测试事件

一、漏洞发现 拿到登录的接口,丢到sqlmap里面跑一把,发现延时注入 进一步查询,发现是sa权限,直接os-shell whomai查询发现是管理员权限 os-shell执行命令太慢了,直接进行nc 反弹 执行base64 加密后的powershell命令&…

DALL·E 3怎么用?DALL·E 3如何申请开通 ?DALL·E 3如何免费使用?AI绘画教程来喽~

一、引言 DALLE 3 是 OpenAI 在上个月(2023 年 9 月)发布的一个文生图模型。 相对于 Midjourney 以及 Stable Diffusion,DALLE 3 最大的便利之处在于,用户不需要掌握 Prompt 的写法了,直接自然语言描述即可。 甚至还…