![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
c栈算法小辰哥
命运从来不语,但它却回答了所有问题
展开
-
数据结构图的创建和遍历(dfs,bfs,附代码)
图的邻接矩阵,邻接表存储,dfs递归非递归,bfs原创 2024-04-30 21:36:36 · 506 阅读 · 5 评论 -
数据结构的终极boss:AVL树的详细讲解及代码实现
当根节点不平衡,平衡因子为2或-2时,分以下情况考虑1.平衡因子为2,说明右子树高,那么再来看根节点的右节点的平衡因子,当此节点的平衡因子为1时,执行左单旋,为-1执行右左双旋2.平衡因子为-2,说明左子树高,那么再来看根节点的左节点的平衡因子,当此节点的平衡因子为-1时,执行右单旋,为-1执行左右双旋时与平衡因子为2时的情况不同,它执行完成后根节点所在的树已经平衡不需要继续进行向上调整。原创 2024-04-17 17:28:09 · 2522 阅读 · 11 评论 -
力扣简单题:二叉搜索树中的搜索
【代码】力扣简单题:二叉搜索树中的搜索。原创 2024-04-17 00:42:13 · 175 阅读 · 3 评论 -
力扣平衡二叉搜索树的创建:将有序数组转换为二叉搜索树
其中mid的使用非常值得记忆。原创 2024-04-17 00:26:21 · 223 阅读 · 3 评论 -
力扣新型排序算法:两个数组的交集
5.差集问题:相等则共同向前一步,不相等则尾插小的并让小的向前一步,只要有一个到底终点则遍历结束,再将未进行遍历的部分进行尾插。4.交集问题:两个迭代器分别在两个set容器的开头相等尾插,否则谁小谁向前一步,只要有一个到达终点则遍历结束。2.要说明一点,只要迭代器类型相同,set等容器都可以使用vector等容器的迭代器初始化。3.由于set的去重加排序特性,可以采用双指针对比法来解决交集和差集问题。原创 2024-04-16 18:49:56 · 206 阅读 · 3 评论 -
力扣综合题详细解析:前k个高频单词
2.整体思路:创建一个map对单词的出现次序进行排序,然后将map中的pair对象提取出来放到一个vector数组里,进行排序,其中sort的第三个元素为仿函数,也就是()的重载,类似于qsort中的比较函数,而比较首先要比较次数,如果次数相同比较字典序(asc码比较),最后尾插并返回字符串的排序。原创 2024-04-16 17:52:49 · 158 阅读 · 3 评论 -
漫话算法:详解线索二叉树的创建遍历及查找
1.线索二叉树的创建主要是为了简化递归和遍历。原创 2024-04-16 17:21:06 · 464 阅读 · 3 评论 -
漫话算法:二叉树的后序遍历非递归
2.思路:设置一个前驱节点,第一层循环采用传统判断条件,第二层只入栈,当栈顶元素的右子树不存在或者已经遍历的情况下,出栈,赋值,将前驱指针设置为该元素,其他情况下,遍历栈顶元素的右子树。原创 2024-04-14 23:02:22 · 169 阅读 · 3 评论 -
漫话算法:二叉树的中序遍历非递归
与前序遍历不同的是,中序遍历无需在第二层循环中给返回数组赋值,直接在提取栈顶元素时赋值。原创 2024-04-14 22:52:26 · 206 阅读 · 3 评论 -
漫话算法:二叉树前序遍历非递归思路
2.思路:设置一个栈,外层循环条件为当头节点不为空且栈不为空,内层循环条件为当头节点不为空时,入栈并把值赋给返回数组,再让指针指向它的左孩子,在所有左孩子都入栈完成后,此时出栈,并将指针指向它的右孩子。原创 2024-04-14 18:22:09 · 235 阅读 · 3 评论 -
漫话算法:二叉搜索树与双向链表
二叉搜索树的应用原创 2024-04-14 16:15:31 · 196 阅读 · 3 评论 -
漫话算法:二叉树转换广义表
2.首先创建一个用于返回的string,如果根节点为空则直接返回这个字符串,然后将根节点的值转换为字符串加到返回的string末尾,如果左子树不为空或者左子树为空huo但右子树存在,则插入一个括号并递归,如果右子树存在则插入一个括号并递归,注意此广义表只有节点都不存在时省略全部括号,或者只存在左节点可以省略一个括号。原创 2024-04-13 18:17:45 · 204 阅读 · 5 评论 -
漫话算法:二叉树的层序遍历
2.基本思路:首先创建一个vector的二维数组,如果节点为空则直接返回这个数组,然后创建一个类型为二叉树节点指针的队列,然后先让二叉树的根入队列,当队列不为空时进行循环,然后在之前创建好的二维数组后面尾插一个一维数组,也就是vector<int>(),注意括号不能缺,首先让队头元素出队列,然后取二维数组的最后一个一维数组,然后进行尾插将队头元素的数据插入到这个一维数组的末尾,然后进行递归调用,左子树不为空调用左子树,右子树不为空调用右子树。1.如何将一棵二叉树进行层序遍历然后存储在一个二维数组里?原创 2024-04-13 18:02:45 · 239 阅读 · 3 评论 -
漫话算法:手把手教你手搓二叉搜索树(从今天起我也是员神了)
一看就会?一写就废?真正的手搓二叉搜索树原创 2024-04-13 09:55:05 · 184 阅读 · 3 评论 -
漫话算法:广义表爆改二叉树(简单了解,招聘几乎不考)
【代码】漫话算法:广义表爆改二叉树(简单了解,招聘几乎不考)原创 2024-04-12 19:13:58 · 97 阅读 · 3 评论 -
漫话算法:二叉树的最近公共祖先
4.递归处理:如果在左右子树都找到了节点,则必为一棵一个,返回根节点,如果左子树为空,则全在右子树,返回右子树的第一个节点,反之亦然,如果没找到,则返回NULL。2.采用背景:后序遍历,因为待定的公共祖先节点需要综合左右子树的搜索结果。3.递归结束:当搜索完叶子节点或者找到相应目标节点时,返回该节点。原创 2024-04-12 16:35:20 · 222 阅读 · 3 评论 -
漫话算法:已知二叉树的两种遍历构建二叉树
还是玩不转遍历?你要的都在这里原创 2024-04-12 16:06:35 · 566 阅读 · 3 评论 -
c++二叉搜索树配套代码
【代码】c++二叉搜索树配套代码。原创 2024-04-11 23:56:16 · 103 阅读 · 4 评论 -
c++高阶数据结构:二叉搜索树详解
1.它有两种存在形式,首先就是空树,其次就是下面的几种表现形式2.若它的左子树不为空,则左子树的所有值小于根节点的值3.若它的右子树不为空,则右子树的所有值大于根节点的值4.它的左右子树都是二叉搜索树2.二叉搜索树的实现1.节点1.结合二叉树的知识,二叉搜索树分别写两个类,一个是节点的类,一个是整个二叉树的类2.注意事项:无论何时调用类模板,都要把模板参数给出3.为了方便调用节点模板,先把它typedef为node2.构造函数。原创 2024-04-11 21:09:15 · 1151 阅读 · 4 评论 -
二叉树的三种非递归遍历
【代码】二叉树的三种非递归遍历。原创 2024-04-10 20:26:25 · 135 阅读 · 3 评论 -
力扣优先队列topk:数组中第k个最大元素
【代码】力扣优先队列topk:数组中第k个最大元素。原创 2024-04-10 11:57:47 · 110 阅读 · 4 评论 -
力扣优先队列:数组中第k个最大元素
【代码】力扣优先队列:数组中第k个最大元素。原创 2024-04-10 11:42:08 · 120 阅读 · 3 评论 -
力扣经典题:逆波兰表达式求值
【代码】力扣经典题:逆波兰表达式求值。原创 2024-04-09 16:24:15 · 118 阅读 · 3 评论 -
牛客stack:栈的压入,弹出序列
【代码】牛客stack:栈的压入,弹出序列。原创 2024-04-09 15:09:08 · 111 阅读 · 3 评论 -
力扣细节递归:平衡二叉树
分析题目思路:分别计算左右子树的高度,每课子树的高度为它的左右子树的最大高度,但是赋值前先进行判断,如果差值过大则直接判否,如果左右两子树有任意一个违规就表示该树不是平衡二叉树。原创 2024-04-02 08:20:14 · 158 阅读 · 4 评论 -
力扣经典题:最小高度树
【代码】力扣经典题:最小高度树。原创 2024-03-31 09:40:31 · 367 阅读 · 4 评论 -
力扣简单题:合并二叉树
【代码】力扣简单题:合并二叉树。原创 2024-03-31 09:29:55 · 310 阅读 · 3 评论 -
力扣1379找出克隆二叉树中的相同节点
【代码】力扣1379找出克隆二叉树中的相同节点。原创 2024-03-31 09:22:51 · 126 阅读 · 4 评论 -
力扣哈希递归树:开幕式焰火
【代码】力扣哈希递归树:开幕式焰火。原创 2024-03-31 09:00:33 · 109 阅读 · 3 评论 -
力扣二叉树:翻转二叉树
【代码】力扣二叉树:翻转二叉树。原创 2024-03-31 08:33:32 · 153 阅读 · 3 评论 -
kmp算法:如何最快地找到子串
如果前后指针字符匹配或者子串第一次进入循环时,前后指针分别加一,并且将后指针对应的next的值赋值为前指针的值,这里和一般循环不同的是这里的每一个next位置都要有值,所以无需接着循环就地储存,而如果不匹配,则将前指针回溯至前指针所在位置的最长相等前缀的末尾进行再一次比对。所以kpm算法的本质:在比较发现错误时,保持主串指针不动,在已匹配部分进行操作,将子串的最长相等前缀与主串的最长相等后缀对齐,子串对比指针从子串头向后移动到最长相等前后缀末尾,再与主串指针进行比对。next数组创建代码。原创 2024-03-29 15:47:54 · 356 阅读 · 5 评论 -
一文让你搞懂稀疏矩阵的存储,转置与快速转置
整体思路:首先定义一个传入地址的结构体room,用于存储转置后的矩阵,首先将目标矩阵的行数和列数作为空间矩阵的列数与行数,因为转置不改变元素个数,所以直接将目标矩阵的非0元素个数赋给空间矩阵,然后制作空间矩阵的三元组(data[0]不参与计算因为不存在有0个未知元素),而我们的空间矩阵赋值以行数为基准,而这个行数就是目标矩阵的列数,在每一行的元素遍历中遍历target的三元组,当空间矩阵的行数等于目标矩阵的列数时,将目标矩阵的该元素的行列交叉赋值给空间矩阵,值直接赋给空间矩阵。原创 2024-03-28 19:03:38 · 892 阅读 · 4 评论 -
力扣库函数题:找到一个数字的k美丽值
sprintf函数:(字符串,转换形式,数字),将数字存在一个字符串中。strncpy函数:(目标字符串,复制字符串,复制长度),复制字符串。atoi函数:将字符串转换为整数。原创 2024-03-24 08:43:27 · 397 阅读 · 4 评论 -
力扣经典题:转换字符串的最少操作次数
【代码】力扣经典题:转换字符串的最少操作次数。原创 2024-03-24 08:13:47 · 119 阅读 · 3 评论 -
力扣暴力题:日期之间隔几天
【代码】力扣暴力题:日期之间隔几天。原创 2024-03-23 21:44:26 · 114 阅读 · 3 评论 -
力扣滑动窗口题:得到K个黑块的最少涂色次数
思路:滑动窗口,先计算前k个字符的涂色次数,然后一个一个向右移动,每次移动右边加一个,左边减一个,如果加的字符白块则加一次,如果减的字符是白块则减一次。原创 2024-03-23 17:41:11 · 187 阅读 · 3 评论 -
力扣寻找子串的新方法:统计字符串中的元音子字符串
【代码】力扣寻找子串的新方法:统计字符串中的元音子字符串。原创 2024-03-23 17:14:13 · 110 阅读 · 3 评论 -
力扣经典题:千位分隔数
【代码】力扣经典题:千位分隔数。原创 2024-03-23 16:54:13 · 87 阅读 · 3 评论 -
力扣秒杀题:两个相同字符间的最长子字符串
【代码】力扣秒杀题:两个相同字符间的最长子字符串。原创 2024-03-23 16:04:56 · 248 阅读 · 3 评论 -
力扣映射手法题:上升下降字符串
【代码】力扣映射手法题:上升下降字符串。原创 2024-03-23 15:30:48 · 91 阅读 · 3 评论