软考-软件设计师(3)-数据结构与算法:树、图、队列、查找算法、排序算法、霍夫曼编码/树、环路复杂性、算法/时间复杂度/空间复杂度等高频考点

场景

软考-软件设计师-数据结构与算法模块高频考点整理。

以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。

注:

博客:
霸道流氓气质-CSDN博客

实现

知识点

树:节点的度、树的度、深度、高度、满二叉树、完全二叉树、平衡二叉树、B树、二叉排序树

节点的度:节点含有子树的个数

树的度:树中最大节点的度就是树的度

树的深度:从根节点开始、自顶向下逐层累加

树的高度:从叶节点开始、自底向上逐层累加

一棵有n个结点的树的所有节点的度数之和为n-1

1、满二叉树:

一个二叉树,如果每一层的节点数都达到了最大值(均为2),则这个二叉树就可以被称作为 "满二叉树"

已知层数求总和:M=₂ⁿ−1,n为层数,M为总数

已知总数求层数:n=log₂(M+1)

2、完全二叉树:

若二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的叶子结点都依次排列在该层最左边的位置上,

则这样的二叉树称为完全二叉树

前 h−1层是满的,最后一层不满,但是最后一层从左到右是连续的

有n个节点的完全二叉树的深度/高度为[log₂ⁿ]+1

技巧:此类题可以画出完全二叉树并代入公式验证

3、平衡二叉树:

平衡二叉树或者是一棵空树,或者是具有下列性质的二叉树:

它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。

4、B树:

B树又叫B-树

是一种多路平衡搜索树,它的阶数m指它最多可以有多少个子结点,当m为2时,B树就成了二叉搜索树

一棵m阶的B树定义:

每个结点最多可以有m-1个关键字,可以是键值对

根结点最少可以只有1个关键字

非根结点最少有m/2个关键字

每个结点的关键字按照从小到大排序,它左子树结点的关键字都小于它,右子树结点的关键字都大于它

所有叶子结点位于同一层,也就是根结点到所有叶子的路径长度相同

每个结点都存有索引key和数据value

5、二叉排序树/二叉查找树/二叉搜索树

二叉排序树或者是一棵空树,或者是具有下列特点的二叉树:

(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;

(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;

(3)左、右子树也分别为二叉排序树;

举例:用关键字序列10、20、30、40、50构造的二叉排序树为

6、经典题目:已知结点的度数和个数求叶子结点个数

一棵度为4的数T中,若有5个度为4的结点,7个度为3的结点,3个度为2的结点,9个度为1的结点,则树T的叶子结点个数

根据树中结点总数为n,n=分支数+1,而分支数等于树中各个节点的度之和,所以根据5*4+7*3+3*2+9*1+1=叶子数+5+7+3+9;因此叶子数为33个

图:邻接矩阵、邻接表、有向图、无向图

1、邻接矩阵

借助矩阵(二维数组)表示元素(图的任意两个顶点)之间的关系

在含有n个顶点和e条边的无向图的邻接矩阵中,零元素的个数是:邻接大小是n²,非零元素的个数为2e,所以零元素的个数是n²-2e

在含有n个顶点、e条边的简单有向图采用邻接矩阵存储结构,则该矩阵的元素数目为n²,其中非零元素数据为e

对于有向图,其邻接矩阵中非零元素的数目表示有向弧的个数

无向图的邻接矩阵是对称矩阵

无向图中一个顶点的度是指图中与该顶点相邻的顶点数

有向图和无向图及其邻接矩阵图示:

有向图的邻接矩阵表示法

2、邻接表

3、根据邻接矩阵求各顶点的出度

邻接矩阵A为非对称矩阵,说明图是有向图,各顶点的出度为矩阵行中1的个数,即2,2,1,1

队列:循环队列、优先队列

1、循环队列

对于循环队列,求队头元素的指针的计算公式为(rear-

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

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

相关文章

【iOS】——Block概要和使用规范

Block概要和使用规范 Block定义 Block是带有自动变量的匿名函数,这里的自动变量是局部变量,匿名函数是说不需要知道该函数的名称也可以调用。无需提前声明或命名就能作为参数传递给其他函数或方法,或者作为变量保存和执行 Block的语法 完…

利用宝塔部署前后端分离springboot项目,以EasyPan为例

前置准备 服务器购买 请参考其他教程,这里不再赘述。 项目 部署到服务器前请确保项目在本地运行正常 安装宝塔面板 宝塔Linux面板的安装配置以及基本使用教程(超详细)_宝塔linux面板新手使用教程-CSDN博客 sql文件 IDEA中怎样导出数据…

删除的视频怎样才能恢复?详尽指南

在日常生活中,我们有时会不小心删除一些重要的视频文件,或者在整理存储空间时不慎丢失了珍贵的记忆片段。这时候,我们可以通过一些数据恢复工具和技巧,找回这些被删除的视频。本文将详细介绍几种常见且有效的视频恢复方法&#xf…

docker 安装jenkins详细步骤教程

Jenkins 是一个开源的持续集成(CI)和持续部署(CD)工具,用于自动化软件开发过程中的构建、测试和部署。 特点和功能: 持续集成:Jenkins 可以自动触发构建过程,检查代码变更并进行构建、测试和部署,以确保团队的代码始终保持可集成状态。 插件生态系统:Jenkins 拥有丰富…

Vue与ASP.NET Core Web Api设置localhost与本地ip地址皆可访问

Vue的设置 我们创建并启动一个Vue项目,如下所示: 打开cmd,输入ipconfig查询本地ip地址: 想通过本地ip地址访问,把localhost改成本地ip地址,发现打不开: 这是因为Vue项目默认只有localhost&…

【Linux】进程IO|重定向|缓冲区|dup2|dup|用户级缓冲区|模拟缓冲区

目录 前言 重定向 实验一 为什么log.txt文件的文件描述符是1 为什么向stdout打印的信息也出现在文件中 实验二 用户级缓冲区 为什么要有用户级缓冲区 系统调用 dup 为什么close(fd1)之后还能向log.txt写入数据? dup2 缓冲区 观察现象 测试1 测试2 测…

【Pytorch实战教程】Pytorch中保存和加载模型的详细介绍

文章目录 保存模型方法一:只保存模型参数方法二:保存整个模型加载模型方法一:加载模型参数(推荐)方法二:加载整个模型训练时保存模型加载并继续训练总结在PyTorch中,保存和加载模型是非常重要的步骤,尤其是在训练大规模模型或需要多次重复实验时。 保存模型 在PyTorch…

C++初阶学习第三弹——类与对象(上)

目录 一.初步认知对象 二.类的基本组成、 1.类的定义 2.类的访问限定符及封装 3.类的作用域 4、类的大小的计算 5.this指针 三.总结 一.初步认知对象 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。…

WPF脱机应用:实现拼音模糊搜索的AutoCompleteBox

引言 在用户界面设计中,提供快速且直观的搜索体验是提升应用可用性的关键。WPF(Windows Presentation Foundation)提供了丰富的控件,其中AutoCompleteBox是一个能够辅助用户输入并提供自动完成建议的控件。然而,在脱机…

Linux下普通用户无法执行sudo指令

当执行sudo指令时出现: xxx(普通用户名字) is not in the sudoers file 说明在/etc/sudoers文件中没有把xxx加入到可执行sudo指令的名单中,因此需要修改sudoers文件。 解决方法:1、vim /etc/sudoers (要…

Java类加载器实现机制详细笔记

1. 类加载器的基本概念 类加载器(ClassLoader):在Java中,类加载器负责将Java类动态加载到JVM中。它是实现动态类加载机制的核心组件,对于开发复杂应用程序(如插件系统、模块化设计等)至关重要。…

什么是hdfs如何使用驱动程序访问hdfs

目录 什么是hdfs 主要特点包括: 架构组成: 应用场景: 如何使用驱动程序访问hdfs 准备工作环境: 启动 Hadoop 服务 可能遇到的问题: ssh验证失败 验证Hadoop服务 对hdfs进行文件操作 什么是hdfs HDFS&#x…

vite5+vue3开发阅读APP实战笔记20240725

目前界面长成这样: 配置别名 修改vite.config.js import {defineConfig} from vite import vue from vitejs/plugin-vue import path from "path"// https://vitejs.dev/config/ export default defineConfig({server: {open: true,port: 8088,},plug…

论文阅读【检测】:商汤 ICLR2021 | Deformable DETR

文章目录 论文地址AbstractMotivation技术细节多尺度backbone特征MSDeformAttention 小结 论文地址 Deformable DETR 推荐视频:bilibili Abstract DETR消除对目标检测中许多手工设计的组件的需求,同时表现出良好的性能。然而,由于Transfor…

MongoDB - 聚合阶段 $count、$skip、$project

文章目录 1. $count 聚合阶段2. $skip 聚合阶段3. $project 聚合阶段1. 包含指定字段2. 排除_id字段3. 排除指定字段4. 不能同时指定包含字段和排除字段5. 排除嵌入式文档中的指定字段6. 包含嵌入式文档中的指定字段7. 添加新字段8. 重命名字段 1. $count 聚合阶段 计算匹配到…

Odoo 17 仪表盘开发指南:打造高效的数据可视化中心

在现代企业管理中,数据驱动的决策至关重要。Odoo 17 提供了强大的平台来构建自定义仪表板, 适用于数据统计、工作台、驾驶舱、数据可视化等场景,以便用户能够一目了然地监控关键指标并做出及时反应。本文将介绍如何在 Odoo 17 中开发一个灵活且高度定制化的仪表盘系统,包括…

12_TypeScript 模块 以及 模块化封装DB 库

TypeScript 模块 1、模块中暴露方法12、模块中暴露方法23、模块中暴露方法34、封装[上一节的db 库](https://blog.csdn.net/qq_46143850/article/details/140664100)5、TypeScript 命名空间 模块的概念(官方): 关于术语的一点说明&#xff1a…

TCP Nagle算法,TCP_CORK,延迟确认机制简单介绍

Nagle Nagle算法是一种改善TCP/IP网络效率的算法。 算法的目的 主要目的是减少网络中小数据包的数量,从而减少网络拥塞。它通过延迟发送小数据包来实现这一目标,直到有足够的数据可以发送一个完整的数据包。 工作原理 如果要发送的数据量达到了最大分段大小(Maximum Segmen…

Android笔试面试题AI答之Android系统与综合类(1)

答案仅供参考,来着文心一言、Kimi.ai 目录 1.简述嵌入式实时操作系统,Android 操作系统属于实时操作系统吗?嵌入式实时操作系统简述Android操作系统是否属于实时操作系统 2.简述Android系统的优势和不足?3.简述Android的系统架构 &#xff1…

实战深度学习--进行蘑菇分类

数据集:https://pan.quark.cn/s/4d3526600c0c 概述 本笔记将介绍如何使用Python和深度学习库(如TensorFlow和Keras)来构建一个卷积神经网络(CNN)模型,以区分可食用和有毒的蘑菇。我们将从数据准备、模型构…