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

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

时间:2024-07-26 15:24:39浏览次数:14  
标签:结点 个数 复杂度 软考 邻接矩阵 二叉 算法 二叉树 节点

场景

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

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

注:

博客:
霸道流氓气质-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-

标签:结点,个数,复杂度,软考,邻接矩阵,二叉,算法,二叉树,节点
From: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140685202

相关文章

  • 禁忌搜索(Tabu Search or Taboo Search,TS)算法解决3DTSP问题
     禁忌搜索算法的基本思想:给定一个当前解(初始解)和一种邻域,然后在当前解的邻域中确定若干候选解;若最佳候选解对应的目标值优于“bestsofar”状态,则忽视其禁忌特性,用它替代当前解和“bestsofar”状态,并将相应的对象加入禁忌表,同时修改禁忌表中各对象的任期;若不存在上述候选解......
  • 模拟算法概览
    前言LeetCode上的模拟算法题目主要考察通过直接模拟问题的实际操作和过程来解决问题。这类题目通常不需要高级的数据结构或复杂的算法,而是通过仔细的逻辑和清晰的步骤逐步解决。适合解决的问题模拟算法适合用来解决那些逻辑明确、步骤清晰且可以逐步执行的问题。这类题型通......
  • 算法与数据结构 -随笔
    1.LinkedList1)Buildthelist2)Sortthelist3)Lookupsomeiteminthelist4)Insertionanddeletioninthelist5) Reversethelist6)JousephproblemWeshouldn'tlimitourselvestoonlymoveonesinglestepbyusing......
  • 贪心算法(二) ------力扣860--柠檬水找零,力扣605--种花问题
    目录力扣860----柠檬水找零题目分析 代码 力扣605---种花问题问题题目分析 代码 力扣860----柠檬水找零题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你......
  • 山东大学数据结构与算法实验10堆及其应用(堆的操作/霍夫曼编码)
    A : 堆的操作题目描述创建 最小堆类。最小堆的存储结构使用 数组。提供操作:插入、删除、初始化。题目第一个操作是建堆操作,接下来是对堆的插入和删除操作,插入和删除都在建好的堆上操作。输入输出格式输入第一行一个数n(n<=5000),代表堆的大小。第二行n个数,代表堆的......
  • 代码随想录算法训练营第45天 | 子序列入门
    300.最长递增子序列https://leetcode.cn/problems/longest-increasing-subsequence/代码随想录https://programmercarl.com/0300.最长上升子序列.html674.最长连续递增序列https://leetcode.cn/problems/longest-continuous-increasing-subsequence/description/代码随想录......
  • 算法入门篇(四)之栈和队列
    目录一、顺序栈、链栈1、顺序栈1.定义与存储结构2.特点3.适用场景2、链栈1.定义与存储结构2.特点3.适用场景3、总结二、顺序队列、链式队列1、顺序队列1.定义与存储结构2.特点3.循环队列4.适用场景2、链式队列1.定义与存储结构2.特点3.适用......
  • 算法入门篇(三)之线性表
    目录一.顺序表1、静态顺序表2、动态顺序表3、顺序表的操作二.单链表、双向链表、循环链表、静态链表1、单链表2、双向链表3、循环链表4、静态链表三.UVA101、UVA11988、UVA126571.UVA101:木块问题(TheBlocksProblem)2.UVA11988:破损的键盘(BrokenKeyboard)......
  • 代码随想录算法训练营第44天 | 动态规划9:买卖股票总结
    188.买卖股票的最佳时机IVhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/description/代码随想录https://programmercarl.com/0188.买卖股票的最佳时机IV.html#算法公开课309.最佳买卖股票时机含冷冻期https://leetcode.cn/problems/best-time-to-buy-a......
  • 随机森林+shap算法进行特征贡献性分析-完整代码数据可直接运行
    直接看结果:    代码:importosimportnumpyasnpfromcollectionsimportCounterimportrandomimportpandasaspd#导入必要的库importnumpyasnpimportpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensembleimpo......