自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 【数一线性代数】027入门

以上就是递归计算二叉树结点个数的实现,递归的写法并不复杂,可作为简单的练习。

2024-10-07 23:06:24 772 1

原创 【数一线性代数】026入门

在众多排序算法中,个人认为选择排序算法的思想最接近平时生活中的想法——每次选择数组中的最小元素,放在数组的前面。其实现也很简单,如果从细节去看,代码中的变量。编写函数,实现对顺序表的选择排序。

2024-10-06 23:04:55 565

原创 【数一线性代数】025入门

在众多排序算法中,个人认为选择排序算法的思想最接近平时生活中的想法——每次选择数组中的最小元素,放在数组的前面。其实现也很简单,如果从细节去看,代码中的变量。编写函数,实现对顺序表的选择排序。

2024-10-05 23:29:58 481

原创 【数一线性代数】024入门

在众多排序算法中,个人认为选择排序算法的思想最接近平时生活中的想法——每次选择数组中的最小元素,放在数组的前面。其实现也很简单,如果从细节去看,代码中的变量。编写函数,实现对顺序表的选择排序。

2024-10-04 23:17:31 494

原创 【数一线性代数】023入门

以上就是递归计算二叉树结点个数的实现,递归的写法并不复杂,可作为简单的练习。

2024-10-03 23:39:30 582

原创 【数一线性代数】022入门

以上就是递归计算二叉树结点个数的实现,递归的写法并不复杂,可作为简单的练习。

2024-10-02 22:29:36 525

原创 【数一线性代数】021入门

以上就是递归计算二叉树结点个数的实现,递归的写法并不复杂,可作为简单的练习。

2024-10-01 22:03:47 1046 1

原创 【数一线性代数】020入门

以上就是将链表中的奇数和偶数分开存放的代码实现,在分析问题的时候采用了分情况讨论的思路。该题中有很多小细节容易被忽略,如:始终将preA向后移动一步(这会导致当cur的值为偶数时,cur->next被默认为分配到链表A中)。但只要自建示例进行模拟,便能很清晰地得到正确的操作。此外将思路转化为代码也是重点,因此有必要将思路分析地十分详细,在多次练习后这种思路到代码的转化就会越来越轻松。

2024-09-30 21:41:41 627

原创 【数一线性代数】019入门

以上就是将链表中的奇数和偶数分开存放的代码实现,在分析问题的时候采用了分情况讨论的思路。该题中有很多小细节容易被忽略,如:始终将preA向后移动一步(这会导致当cur的值为偶数时,cur->next被默认为分配到链表A中)。但只要自建示例进行模拟,便能很清晰地得到正确的操作。此外将思路转化为代码也是重点,因此有必要将思路分析地十分详细,在多次练习后这种思路到代码的转化就会越来越轻松。

2024-09-29 21:56:46 613

原创 【数一线性代数】018入门

以上就是通过后序遍历计算二叉树的WPL的实现。类似于二叉树转中缀表达式(传递深度)和判断顺序存储二叉树是否是BST(传递前驱元素),本题在实现的过程中也构建了辅助工具函数来传递额外的参数,这种思想在二叉树的递归中非常常用。

2024-09-28 23:48:38 677

原创 【数一线性代数】017入门

以上就是通过后序遍历计算二叉树的WPL的实现。类似于二叉树转中缀表达式(传递深度)和判断顺序存储二叉树是否是BST(传递前驱元素),本题在实现的过程中也构建了辅助工具函数来传递额外的参数,这种思想在二叉树的递归中非常常用。

2024-09-27 23:39:27 630

原创 【数一线性代数】016入门

以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。

2024-09-26 23:48:17 876

原创 【数一线性代数】015入门

以上就是通过中序遍历完成二叉树转中缀表达式的实现。本题重点在于中序遍历,在此基础上,又通过传递当前深度,来判断运算操作是否对应根节点。

2024-09-25 23:52:54 436

原创 【数一线性代数】014入门

以上就是通过中序遍历完成二叉树转中缀表达式的实现。本题重点在于中序遍历,在此基础上,又通过传递当前深度,来判断运算操作是否对应根节点。

2024-09-24 23:53:28 322

原创 【数一线性代数】013入门

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时,如果想找到更大元素,就需要向下或向右搜索;如果想找到更小元素,就需要向上或向左搜索。但如果要对时间消耗进一步优化,就需要考虑运用题中给出的特殊条件——本题重点在于在尽可能低的时间复杂度在扫描过程中满足。只要满足这两点,就可以在有序的二维数组中以。[n为二维数组的行数,m为二维数组的列数]

2024-09-23 23:57:50 1152

原创 【数一线性代数】012入门

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时,如果想找到更大元素,就需要向下或向右搜索;如果想找到更小元素,就需要向上或向左搜索。但如果要对时间消耗进一步优化,就需要考虑运用题中给出的特殊条件——本题重点在于在尽可能低的时间复杂度在扫描过程中满足。只要满足这两点,就可以在有序的二维数组中以。[n为二维数组的行数,m为二维数组的列数]

2024-09-22 23:38:40 1384

原创 【数一线性代数】011入门

以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。

2024-09-21 23:46:06 1284

原创 【数一线性代数】010入门

以上就是通过定义三个指针,不断调整最小指针逐步进行扫描,以得出三数组构成三元组最小距离的过程。代码中使用了cmath头文件中的abs函数来计算绝对值。本题的核心在于分析简化三元组的距离公式,根据简化后的公式可以相对顺利地得出优化后的解题方法。此外(非重点),本篇代码还采用了一个优化的小技巧——尽量不在循环体内定义变量(变量d特地定义在了循环体之外),因为如果在循环中定义局部变量,每次循环迭代都会进行一次空间的分配和释放,多次重复的操作会使得代码性能有所降低。

2024-09-20 23:52:36 1136

原创 【数一线性代数】009入门

以上就是通过定义三个指针,不断调整最小指针逐步进行扫描,以得出三数组构成三元组最小距离的过程。代码中使用了cmath头文件中的abs函数来计算绝对值。本题的核心在于分析简化三元组的距离公式,根据简化后的公式可以相对顺利地得出优化后的解题方法。此外(非重点),本篇代码还采用了一个优化的小技巧——尽量不在循环体内定义变量(变量d特地定义在了循环体之外),因为如果在循环中定义局部变量,每次循环迭代都会进行一次空间的分配和释放,多次重复的操作会使得代码性能有所降低。

2024-09-19 23:42:24 930

原创 【数一线性代数】008入门

以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。

2024-09-18 23:47:10 1114

原创 【数一线性代数】007入门

本题从实现角度看,实用性不大(好好的栈为什么要转成队列啊 x_x)。但通过本题可以更好地理解栈和队列的性质,此外本题所用到的思想还是比较有用的——两次序列反转得到正序序列(类似与用数组逆置实现数组循环左移的思路,明天会介绍一下)。while (1){cout << "请输入要执行操作(1.入队 2.出队 3.退出): ";int op;cin >> op;cout << "请输入入队元素: ";int t;cin >> t;// 执行push操作enqueue(t);

2024-09-17 23:41:33 769

原创 【数一线性代数】006入门

本题从实现角度看,实用性不大(好好的栈为什么要转成队列啊 x_x)。但通过本题可以更好地理解栈和队列的性质,此外本题所用到的思想还是比较有用的——两次序列反转得到正序序列(类似与用数组逆置实现数组循环左移的思路,明天会介绍一下)。while (1){cout << "请输入要执行操作(1.入队 2.出队 3.退出): ";int op;cin >> op;cout << "请输入入队元素: ";int t;cin >> t;// 执行push操作enqueue(t);

2024-09-16 23:41:11 775

原创 【数一线性代数】005入门

以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需以引用方式传递preV,判单cur的值是否大于preV即可。本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。

2024-09-15 23:55:14 1116

原创 【数一线性代数】004入门

以上就是经典的快速排序,下面对比一下优化前后一趟扫描的过程(右侧为优化后):再看一下排序的整体过程(优化版):[红色代表元素已经处在最终位置。灰色表示此趟扫描选择的枢轴]

2024-09-14 23:53:01 1072

原创 【数一线性代数】003入门

以上就是经典的快速排序,下面对比一下优化前后一趟扫描的过程(右侧为优化后):再看一下排序的整体过程(优化版):[红色代表元素已经处在最终位置。灰色表示此趟扫描选择的枢轴]

2024-09-13 23:44:38 1737

原创 【数一线性代数】002基础

以上就是并查集的查找和合并操作的实现。此处的重点在于理解find函数路径压缩操作和具体的实现方法。而合并操作还可以继续优化——按秩合并,此处不再过多介绍。

2024-09-12 23:37:52 515

原创 【数一线性代数】001基础

以上就是并查集的查找和合并操作的实现。此处的重点在于理解find函数路径压缩操作和具体的实现方法。而合并操作还可以继续优化——按秩合并,此处不再过多介绍。

2024-09-11 23:35:29 386

原创 【408DS算法题】041进阶-并查集基本操作

编写函数,实现并查集的基本操作(查找、合并)。并查集中包含数据结构`parent`数组,存储每个结点的父结点。对于查找操作,可以通过递归找到当前结点的根结点,然后进行路径压缩——令当前结点的父结点为根节点,最后返回根节点。对于合并操作,只需要将两节点的根结点进行合并即可。

2024-09-10 23:33:09 298

原创 【408DS算法题】040提高-判断无向图是否是一棵树

对于一个无向图,判断它是否为一棵树需要满足两点条件:1. 从根结点可达其余所有结点2. 无环对于第一点,通过BFS/DFS进行遍历并记录结点的访问情况就可以得出;对于第二点,则需要在遍历的同时检查该结点的“子结点”(非“父结点”的邻居)是否都只会访问到一次。为实现这一点,还需要引入`parents`数组来记录图中每个结点的“父结点”。

2024-09-09 23:57:14 611

原创 【408DS算法题】039进阶-判断图中路径是否存在

对于给定的图G,设计函数实现判断G中是否含有从`start`结点到`stop`结点的路径。1.BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点`i`就表示存在路径`start->i`,故只需判断每个结点`i`是否就是`stop`。2.理解的图DFS版本的思想,首先需要根据递归的思想,推理出递归函数的作用——判断图中是否存在路径`cur->stop`,再将这一“功能”运用到遍历中,思路就会非常简单。

2024-09-08 23:56:42 920

原创 【408DS算法题】038进阶-图深度优先遍历DFS

设计函数实现对图的深度优先遍历。--此处因为涉及到递归,不能直接像BFS那样新建`visited`数组,否则每次递归都会独立创建一个`visited`数组。为此,设计了辅助函数来实现目标效果。

2024-09-07 23:58:28 369

原创 【408DS算法题】037进阶-图广度优先遍历BFS

设计函数实现对图的广度优先遍历。图的BFS和二叉树的BFS在大体思路上是相同的,但对于图需要额外考虑一点——结点是否已经被访问过。这是因为图不同于树,两点之间可以有着多条路径。

2024-09-06 23:57:52 637

原创 【408DS算法题】036基础-14年真题_求二叉树的WPL

二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T ,采用二叉链表存储, 请设计求T的WPL的算法。--后序遍历、辅助工具函数传递深度

2024-09-05 10:22:19 807

原创 【408DS算法题】035进阶-17年真题_二叉树转中缀表达式

请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。--中序遍历、根节点特殊处理

2024-09-04 23:51:45 515

原创 【408DS算法题】034进阶-22年真题_判断顺序存储二叉树是否是BST

以上就是利用中序遍历判断顺序存储的二叉树是否为BST的实现,相较于先序遍历中每次传递min和max,以判断cur的值是否在(min, max)内;中序遍历只需本题重点在于面对顺序存储的二叉树,通过结论实现基础操作,并合理运用解题。

2024-09-03 23:58:00 863

原创 【408DS算法题】033基础-判断二叉树是否是二叉排序树

二叉排序树:对于每个节点,其左子树中所有节点的值都小于当前结点的值,其右子树中所有节点的值都大于当前结点的值;左子树和右子树本身也是二叉搜索树。给定二叉树的根节点root,判断该二叉树是否是二叉排序树。

2024-09-02 16:51:38 833

原创 【408DS算法题】032基础-判断二叉树是否是完全二叉树

完全二叉树:除了最后一层之外,每一层的节点数都达到了最大值;最后一层的节点从左到右依次排列,没有空缺。给定二叉树的根节点root,判断该二叉树是否是完全二叉树。

2024-09-01 20:30:51 464

原创 【408DS算法题】031基础-判断二叉树是否是平衡二叉树

对计算二叉树高度函数进行修改,通过限定后的平衡二叉树高度,高效判断二叉树是否是平衡二叉树

2024-08-31 23:56:25 300

原创 【408DS算法题】030基础-求二叉树叶结点的个数

给定二叉树的根节点root,计算其叶节点的个数。

2024-08-30 23:54:01 482

原创 【408DS算法题】029基础-求二叉树的高度

给定二叉树的根节点root,求二叉树的高度。1.层次遍历;2.后序遍历。

2024-08-29 23:56:31 1655

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除