自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 洛谷P3884二叉树问题(C++)

读题可知题目需要求出二叉树的深度宽度与两点间最短路径,这其实是三个问题分别解决并输出,求宽度与深度可以在一个dfs中完成,开数组记录每一深度下的节点数,最大的即为宽度,对于最短路径则使用bfs,用队列保存节点,每次弹出队头并加入左右父节点,左右节点则路径加一,父节点则路径加二,直到搜索到目的。

2023-11-02 20:12:12 193

原创 洛谷P1229遍历问题(C++)

通过分析可知每个根节点,只有当左右子树只有一个存在时中序遍历才可能会有两种结果,与美国血统那题相似,通过深度优先搜索查找左或右子树的根节点(满足先序中根节点后面节点与后序中根节点前面节点相同)则结果乘2。

2023-11-01 23:31:41 115 1

原创 洛谷P1305 新二叉树(C++)

通过阅读本题给出的树格式可以看出类似于给定层序遍历求先序遍历,通过栈这一结构,开始将根节点入栈,循环每次弹出栈顶并搜索栈顶的左右节点入栈,注意入栈顺序是右左,这样出栈时才能是左右,当栈为空时循环结束。

2023-10-27 19:15:28 108 1

原创 二叉树层序遍历

二叉树的层序遍历在原本的树结构中无法做到,因此需要借助队列这一数据结构,将根节点先加入队列中,通过队列的大小来记录当前层的元素个数,每次弹出元素的同时将其左右节点加入队列,当队列为空时遍历结束。

2023-10-25 22:34:13 75 1

原创 二叉树遍历(迭代法)

中序遍历与先序后续都不相同,要将节点访问与节点处理分开进行,创建指针指向根节点,循环条件为指针或栈不为空,若节点不为空则将指针指向左节点,为空则将指针指向栈顶并将栈顶弹出,同时将栈顶数据存入结果数组,再将指针指向右节点。通过栈来模拟递归,先将根节点放进栈,循环条件为栈不为空,每次将栈顶弹出并加入结果数组,若不为空则将其右节点入栈,左节点入栈,这样是因为栈先进后出,保证左节点先出栈。先序遍历为根左右,后序遍历为左右根,将先序遍历左右节点进栈顺序更换则变为根右左,再将得到的结果数组反转为左右根,即为后序遍历。

2023-10-23 20:57:50 51 1

原创 第一章 函数、极限与连续

第五节 连续与间断

2023-10-06 21:35:48 40 1

原创 洛谷P2234 营业额统计(C++)

看到这题开始往栈和队列的方向想想了很久没有思路,通过查看后面的题解学习了set集合以及对应迭代器的使用方法,set结构中lower_bound(p)方法,即找到大于等于数p的最小数这一方法完美契合题目,该数前一位则是小于等于数p的最大数,因为set集合会自动从小到大排序。

2023-10-04 16:03:21 212 1

原创 洛谷P4387 验证栈序列(C++)

第一次看题理解错了题意,以为就是简单的判断两个数列反向是否相同,后来看到是出栈的可能顺序,应该用数组模拟,当栈顶与数组第一个相同时即出栈,最后如果栈为空则该序列是可能的。

2023-10-03 21:11:05 140

原创 洛谷P2058 海港(C++)

这题我一开始理解错了题意,以为是统计每个小时内的,题目其实要求的是该船过去一小时内的,于是使用队列,将每一个人的国籍与时间封装成结构体压入队列。在每条船开始前检索队列,只留下一小时内的人。

2023-10-02 22:37:54 393 1

原创 洛谷P1160 队列安排

今天写题时我出现了很严重的错误,总是想着使用链式存储解决问题,但是涉及到指针的内容就特别容易出错,导致花费了大量时间也没写出来,通过阅读别人的题解发现用数组来模拟双向链表是一种简单又方便的方法。

2023-09-29 20:46:53 54 1

原创 洛谷P1241 括号序列

看到题目第一眼,这种边输入边判断的情况,第一反应是使用栈,是左括号就入栈,是右括号就开始判断,并将能匹配的两个括号的状态改为1,我开始理解题意理解错误,以为是要一直找到匹配成功的左括号为止,其实是只判断最近的第一个左括号,匹配成功与失败都退出循环。

2023-09-28 19:30:40 43

原创 洛谷P1540 机器翻译(C++)

看到题目中有一个很明显的清空最早进入内存的单词,可以反应到使用先进先出的数据结构队列,同时开一个bool类型的数组判断该单词是否在内存中即可。

2023-09-25 15:12:13 376 1

原创 洛谷P1996 约瑟夫问题 (C++)

简单阅读题目之后第一想法就是在数据结构中学习过的链表,而且是循环链表,即将最后一个节点的next指向第一个节点,链表的插入部分占用了大部分时间,原因是每次新分配空间的next忘记指向null,导致空指针问题。

2023-09-24 16:55:16 115 1

原创 洛谷P1449 后缀表达式(C++)

首先是要理解题意,可以得到思路是逐个字符检测,当检测到运算符时对此运算符前两个数字进行运算,并将得到的结果代替这两个数字,由此发现可以使用栈这一数据结构,使用数组进行模拟,注意当字符超过两位时转10进制需要依次乘10.

2023-09-23 16:09:12 188 1

原创 洛谷P3613 寄包柜 (C++)

看到题目我的第一想法是使用二维数组,开一个a[100001][100001],写完直接运行不了,通过学习洛谷题解发现使用STL中的map容器可以避免空间复杂度过大的问题,特别是理解了二维map的值,例如map<int,map<int,int> >a,a[i][j]的值就是第三个int,个人理解a[i][j]就相当于第二层map的key。

2023-09-22 20:46:16 220

空空如也

空空如也

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

TA关注的人

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